我想用一个HashSet<Long>
来存储大量唯一数字的列表,并且在内存中。我计算了所需的近似内存(以64位指针大小为单位):
Long占用16个字节的空间。因此,最初我将条目数乘以16以获取内存。但实际上,每个条目的内存要比16字节多得多。之后我研究了 HashSet
的实现。简而言之,在底层实现中,它实际上会在hashset的每个条目中存储一个额外的虚拟对象(12字节)。并且还有一个指向下一个条目的指针(8字节),从而使每个条目多出12+8字节。
因此,每个条目的总内存:16+12+8 = 36字节。但当我运行代码并检查内存时,每个条目的内存仍然比36字节多得多。
我的问题(简而言之):HashSet
需要多少内存(例如,在64位机器上)?