VisualVM - 查找对类的所有引用

rhi*_*nds 10 java memory-leaks visualvm

我试图在应用程序中调试permgen错误.我正在运行VisualVM来分析应用程序,并采取了内存快照的堆转换.

将快照加载到VisualVM中进行分析,我现在可以在类列表中看到几个出现多次的类,都列出了0个实例,0个大小 - 我只期望每个类中的一个(可能链接到它的类加载器) - 是否存在有什么方法可以确定什么仍然保持对没有实例的这些类的引用?很高兴使用另一个工具,如果我可以加载转储(.hprof)来分析持有引用的内容.

谢谢!

bar*_*itt 29

好吧,说"使用MAT"并没有真正回答这个问题!

要在VisualVM中,在Sampler或Profiler视图中,有一个标记为"Heap Dump"的按钮(右上角).单击此按钮,打开堆分析器.在"类"选项卡下,显示所有已加载的类.在底部有一个搜索框,键入您感兴趣的类名,在过滤后的视图中双击相关的类.

这将打开实例视图.右键单击左窗格中的实例,然后选择"显示最近的GC根"以查找引用该对象的内容.

巴尼


K E*_*son 7

我使用MAT这样的东西.工作得很好,即使在大堆上也是如此.