gpt4 book ai didi

java - 不同 Java 映射类型的每个映射值的相对内存开销是多少

转载 作者:行者123 更新时间:2023-12-03 22:54:08 26 4
gpt4 key购买 nike

我有一个例子,我有一个“属性映射”,每个映射都附加到一个非常大的对象集合。我只对 map 本身的开销感兴趣,而不是附加的键和值。

许多具有少量属性,即:< 5,许多没有。对于空 map ,我使用单例“空实例”作为优化。

就速度而言,在 <= 5 的计数下,TreeMap 在检索和删除节点时的“自动修剪”方面似乎等于或优于 HashMap。我认为 HashMap 对每个条目使用哈希/句柄数组的内存开销,包括高于充满空条目句柄的负载因子的内存,以及对象开销和句柄存储键和“条目[+内部”中的值字段(如果有)]”。

此外,我认为 TreeMap 仅使用每个条目对象的开销 + 列表条目中的键、值、上一个、下一个句柄字段,以及尽可能小的数组二进制搜索 - 一个数组对象(修剪为大小)仅包含键和值的句柄。

有没有人真正检查过每种 Java 映射类型的准确完整开销?对于我的无数具有属性的对象,它会在 1 到 5 个属性的情况下产生显着差异,而不会影响访问速度。

最佳答案

https://code.google.com/p/memory-measurer/wiki/ElementCostInDataStructures

TreeMapHashMap 每个条目使用的内存量大致相同,尽管 TreeMap 的常量开销确实略小 map 本身。

关于java - 不同 Java 映射类型的每个映射值的相对内存开销是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26245561/

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