Java JVM堆转储未引用的对象

Java JVM堆转储未引用的对象,java,garbage-collection,jvm,heap,Java,Garbage Collection,Jvm,Heap,我有一个应用程序,它使用的对象比预期的短寿命对象多得多,这导致了我需要解决的重大性能问题。为了让您了解问题的严重性,在垃圾收集再次运行之前,Eden空间在10秒内从大约200mb跃升到1800mb,并将Eden完全恢复。我已经进行了两次堆转储,一次是在GC之后,另一次是在下次运行之前。我想分析这些,看看未引用的对象是什么,这样我就可以找到问题的根源。然而,当我将堆转储加载到eclipse或netbeans中时,它们似乎都删除了与未引用对象相关的数据,并在应用程序中显示了当时200 MB的引用对象

我有一个应用程序,它使用的对象比预期的短寿命对象多得多,这导致了我需要解决的重大性能问题。为了让您了解问题的严重性,在垃圾收集再次运行之前,Eden空间在10秒内从大约200mb跃升到1800mb,并将Eden完全恢复。我已经进行了两次堆转储,一次是在GC之后,另一次是在下次运行之前。我想分析这些,看看未引用的对象是什么,这样我就可以找到问题的根源。然而,当我将堆转储加载到eclipse或netbeans中时,它们似乎都删除了与未引用对象相关的数据,并在应用程序中显示了当时200 MB的引用对象。有人知道我可以使用什么工具/方法来分析堆转储以查看未引用的对象是什么吗

谢谢


James

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

我已经能够跟踪到许多与堆相关的问题


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

上次我调试此类问题时,我使用了它,这对我有很大帮助。

中提供的可能对您有帮助。您还可以按照常见问题解答中的说明,尝试启用
-保持对象不可访问