gpt4 book ai didi

java - TreeMap 集合需要多少内存?

转载 作者:行者123 更新时间:2023-12-01 23:10:26 26 4
gpt4 key购买 nike

需要多少内存TreeMap<Long, Long>包含 1000 个(所有唯一的)键值对的集合?

是的,我只能看内存转储,但需要详细了解原因:

  • Long = n 字节
  • Entry<Long, Long > = 2n 字节,所以 1000 个条目 = 2000n 字节
  • 树节点中的引用:k 字节,1 个节点有 2 个指向子节点的链接,所以 2k 字节,
  • 等等

总计:X ?

最佳答案

JOL(Java 对象布局)

要回答此类问题,您可以使用工具 JOL .

在你的情况下它会得到这样的结果:

java.util.TreeMap@17046283d footprint:
COUNT AVG SUM DESCRIPTION
2000 24 48000 java.lang.Long
1 48 48 java.util.TreeMap
1000 40 40000 java.util.TreeMap$Entry
3001 88048 (total)

Total 88048 bytes used

粒度

TreeMap 本身:

OFF  SZ                    TYPE DESCRIPTION               VALUE
0 8 (object header: mark) N/A
8 4 (object header: class) N/A
12 4 Set<K> AbstractMap.keySet N/A
16 4 Collection<V> AbstractMap.values N/A
20 4 int TreeMap.size N/A
24 4 int TreeMap.modCount N/A
28 4 Comparator<? super K> TreeMap.comparator N/A
32 4 Entry<K, V> TreeMap.root N/A
36 4 EntrySet TreeMap.entrySet N/A
40 4 KeySet<K> TreeMap.navigableKeySet N/A
44 4 NavigableMap<K, V> TreeMap.descendingMap N/A
Instance size: 48 bytes

TreeMap.Entry

OFF  SZ          TYPE DESCRIPTION               VALUE
0 8 (object header: mark) N/A
8 4 (object header: class) N/A
12 1 boolean Entry.color N/A
13 3 (alignment/padding gap)
16 4 K Entry.key N/A
20 4 V Entry.value N/A
24 4 Entry<K, V> Entry.left N/A
28 4 Entry<K, V> Entry.right N/A
32 4 Entry<K, V> Entry.parent N/A
36 4 (object alignment gap)
Instance size: 40 bytes

和长:

OFF  SZ   TYPE DESCRIPTION               VALUE
0 8 (object header: mark) N/A
8 4 (object header: class) N/A
12 4 (alignment/padding gap)
16 8 long Long.value N/A
Instance size: 24 bytes

您可能还需要阅读有关 alignment 的其他问题和 object header .

关于java - TreeMap<Long, Long> 集合需要多少内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70026265/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com