Java HashSet<Long>应该占用多少内存
2022-09-03 07:00:06
我想使用a在内存中存储一大堆唯一数字。我计算了要消耗的近似内存(以64位指针大小表示):HashSet<Long>
Long 将占用 16 个字节的空间。因此,最初我将条目数乘以16以获得内存。但实际上,每个条目的内存远远超过16个字节。之后,我研究了实现。简而言之,在底层实现中,它实际上为每个哈希集条目存储了一个额外的虚拟对象(12个字节)。以及指向下一个条目的指针(8 个字节)。因此,每个条目额外允许 12+8 个字节。HashSet
因此,每个条目的总内存:16+12+8 = 36 字节。但是,当我运行代码并检查内存时,每个条目仍然远远超过36个字节。
我的问题(简而言之):需要多少内存(例如,在64位机器上)?HashSet