gpt4 book ai didi

java - 双向缓存的内存使用影响

转载 作者:行者123 更新时间:2023-12-01 11:14:39 24 4
gpt4 key购买 nike

我想知道以下代码片段对内存使用的影响。我的理解是,每个实例仅存储在内存中,并且对第二个缓存的每次添加都只是创建一个指针。如果创建一个指针会消耗多少空间?对于下面的示例,有什么方法可以监控 JVM 中发生的情况和内存使用情况吗?是否有必要实习uid?任何有关以下内容的建议将不胜感激。

//Bidirectional Cache
HashMap<String, Long> cache1 = new HashMap<String, Long>();
HashMap<Long, String> cache2 = new HashMap<Long, String>();

//Some Random Test Data
for(int i = 0; i < 100000; i++){
Long id = new Long(i);
String uid = UUID.randomUUID().toString();

cache1.put(uid, id);
cache2.put(id , uid);
}

最佳答案

在 64 位 JVM 上,对象引用最多占用 8 个字节,但要感谢 CompressedOops 4字节。由于您只有 100000 个对象,因此 map 引用将占用 4*4*100000 = 1,6MB 的内存。 map 内容将占用 100,000*(sizeof(UUID)+sizeof(Long)),仍为数十兆字节。

实习有助于处理相同的字符串,UUID 中的 U 之一会告诉您为什么这对您没有帮助。并不是说你真的需要帮助。一张包含 10 万个条目的小 map 并不值得特别关注。

关于java - 双向缓存的内存使用影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31982495/

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