HashMap将消耗多少大小?

时间:2019-01-08 10:40:00

标签: java collections hashmap

我最近在一次采访中被问到一个问题,例如,是否创建了具有100个键值对的HashMap,它将消耗多少内存。任何人都可以解释地图中每个条目消耗多少。

1 个答案:

答案 0 :(得分:1)

这将取决于平台,例如JVM使用压缩的opts,内存中的对象对齐,哈希中的冲突等。最重要的是,您必须包括键和条目的大小,它们是独立的对象。要获取数据结构的实际内存使用情况,您应该检查内存转储,但即使是it's not straightforward也是如此。

如果您可以将问题简化为标准java.util.HashMap的大小,容量和负载系数,则:

  • 根据设计,容量始终是2的幂,因此大小必须至少为128。
  • 默认负载系数为0.75。要存储100个负载因子为0.75的元素,我们需要256个容量,因为128不够用(128 * 0.75 = 96 <100)。
  • 由于HashMap以上将存储大小为256的Node[] table,可容纳100个元素。