检测到内存泄漏但无法理解确切原因,因为hashmap条目令人困惑?

时间:2012-12-19 10:32:22

标签: java memory-leaks jvm

我使用eclipse MAT来分析我的应用程序的堆转储。这表明一个类是泄密嫌疑人。一个实例变量声明为静态哈希映射,每小时负责数千个条目。在疑似类的支配者树视图中,有时会发现输入值为

hashmap$entry->classname->value 

但大部分时间都像

hashmap$entry->hashmap$entry->....->classname->value

在这种情况下,最上面的hash$mapp条目显示20%的消耗。较低的等等。与类名相关联的hashmap$entry消耗较少,而且上限和中间hashmap$entry无法展开。

我很困惑这是什么意思?任何人都可以解释一下或建议任何可以解释这些事情的文件吗?在此先感谢

1 个答案:

答案 0 :(得分:0)

Java HashMap类有一个内部数据结构Entry。如果您向地图添加一个条目(通过put()),它将创建一个包含您的键/值对的条目。

如果添加了具有相同散列的第二个密钥,则链接Entry结构。我想一遍又一遍地添加相同的条目,但是为密钥创建了新对象,导致大量链接。

您是否在地图键中看到了哪些对象类型&值?