可以通过编程方式确定由于java引用而保留了多少内存吗?

时间:2012-08-12 02:31:47

标签: java

我不是在询问单个引用占用多少内存。我想知道垃圾收集的反向意义。

即。给定引用X,该引用有多少内存不允许垃圾收集器释放。

可以这样做吗?

显然,如果一个人可以,并且如果一个人有一组引用(AB和C)那么很可能会保留一些内存重叠(即A和B可能都与相同的内存位有一些连接) ),没关系。

重点是,试图弄清楚为什么会发生内存泄漏。如果有一个程序包含长寿命对象,可以编程地找出这些对象中的哪些正在生长,然后在所述对象上进行冲洗和重复。

有可能吗?

1 个答案:

答案 0 :(得分:1)

MemoryMeasurer看起来很有趣,但我认为问题是询问你不了解的记忆 - 即;记忆意外臃肿,你正在寻找线索的原因。

VisualVM有一个内存分析器,可以告诉你保留了哪种对象,这是一个很好的起点。我不知道有任何工具可以解决这个问题并告诉你哪些对象会保留它们。