JVM堆转储未引用的对象

时间:2010-11-07 13:24:09

标签: java garbage-collection jvm heap

我有一个应用程序使用了比预期的短期对象更多的东西,这导致了我需要解决的重大性能问题。为了让您了解问题的严重程度,在垃圾收集再次运行之前,伊甸园空间在10秒内从大约200mb跳到1800mb,并使Eden重新向下。我在GC之后进行了2次堆转储,在下次运行之前进行了一次堆转储。我想分析这些并查看未引用的对象是什么,所以我可以找到问题的根源,但是,当我将堆转储加载到eclipse或netbeans时,两者似乎都删除了与未引用对象关联的数据,只是显示当时应用程序中引用的200mb引用对象。有没有人知道我分析堆转储的工具/方式,看看未引用的对象是什么?

谢谢,

詹姆斯

4 个答案:

答案 0 :(得分:2)

上次我调试了这个问题时,我使用http://www.yourkit.com/给了我很多帮助。

答案 1 :(得分:1)

我不知道分析堆转储的工具,但jdk发行版附带的jvisualvm有一个相当不错的内存分析器,我用来调试类似的问题。它应该在你的jdk bin目录中。

答案 2 :(得分:1)

我已经能够使用IBM Heap Analzyer

跟踪许多与堆相关的问题

但我想你必须运行IBM SDK才能使用它,但也许值得一试?

答案 3 :(得分:1)

Unreachable Objects histogram中的Eclipse Memory Analyzer可以帮助您。您也可以尝试按照常见问题解答中的说明启用-keep_unreachable_objects