我是否正确计算了HashMap的内存消耗?

时间:2018-06-10 19:18:08

标签: java hashmap

我尝试使用https://algs4.cs.princeton.edu/14analysis/

计算HashMap的内存消耗量 你能帮我看看吗?我是对的吗?

HashMap是一些Node个对象。

Each node consists of:
object overhead: 16 bytes
    final int hash : 4 bytes
    final K key    : 8 bytes
    V value        : 8 bytes
    Node<K,V> next : 8 bytes
                     36 bytes + padding = 40 bytes

HashMap本身包含以下字段:

object overhead              : 16 bytes
Set<Map.Entry<K,V>> entrySet : 8 bytes
final float loadFactor       : 4 bytes
int modCount                 : 4 bytes
int size                     : 4 bytes
Node<K,V>[] table            : 40N bytes (16 bytes of object overhead, 4 bytes for the length, and 4 bytes of padding plus the memory needed to store the values)
int threshold                : 4 bytes
Set<K> keySet                : 8 bytes
Collection<V> values         : 8 bytes
                             : 56 + 40N bytes

问题是:在此计算中我是否必须考虑Node的大小? 如果是,则HashMap的大小为56 + 160N,如果不是56 + 40N

你对此有何看法?

0 个答案:

没有答案