gpt4 book ai didi

java - Guava ImmutableMap 会推迟 Map 调整大小吗?

转载 作者:搜寻专家 更新时间:2023-11-01 02:41:06 25 4
gpt4 key购买 nike

当我测试 Guava ImmutableMap 和 HashMap 时,我发现 ImmutableMap 调整大小不是在常规点,也就是 16、32、64。这是什么意思?

测试代码:

Map<Integer, Integer> mapFootPrint = new HashMap<Integer, Integer>();

for(int i = 1; i < 1000; i ++){
mapFootPrint.put(i, i+ 128); //no cache integer
ImmutableMap<Integer, Integer> immutableMap = ImmutableMap.copyOf(mapFootPrint);

System.out.println(MemoryMeasurer.measureBytes(mapFootPrint));
System.out.println(MemoryMeasurer.measureBytes(immutableMap));
}

结果图: enter image description here

Y 轴是以字节为单位的内存占用,X 轴是映射大小。蓝色是 HashMap,橙色是 ImmutableMap。您可以看到 ImmutableMap 的大小调整晚于 HashMap。

最佳答案

这只是一个不同的负载因子 - 普通 HashMap 为 1.33,ImmutableMap 为 1.2。所有 HashMap 都有可用空间,因为哈希从来都不是完美的,可变映射需要额外的空间来存储潜在的新条目。查看 Guava com.google.common.collect.Hashing.closedTableSize()、Guava com.google.common.collect.RegularImmutableMap.MAX_LOAD_FACTORjava。 util.HashMap.DEFAULT_LOAD_FACTOR

关于java - Guava ImmutableMap 会推迟 Map 调整大小吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33039590/

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