应用程序遇到运行缓慢问题,并生成了一些heapdump文件,该heapdump文件为1.2GB,我需要使用8.4GB RAM运行我的ha456.jar,只能打开heapdump。

在此之前,当我分析heapdump时,我将尝试查看更大的LeakSize并检查Leak Suspect值,并且可以看到我的应用程序的哪个类或哪个方法拥有较大的内存。然后,我将尝试修复代码,以便使其具有更好的性能。

这次,我无法真正理解应用程序的哪个模块/方法导致内存不足问题。以下是我的HeapAnalyzer屏幕截图:

java - 如何分析带有常见泄漏嫌疑人的heapdump-LMLPHP

java - 如何分析带有常见泄漏嫌疑人的heapdump-LMLPHP

java - 如何分析带有常见泄漏嫌疑人的heapdump-LMLPHP

对我来说,它只是普通的类,例如java / lang / object,java / lang / Long或java / util / HashMap。我真的不知道我的应用程序的哪种方法导致内存不足。

感谢您对如何对此进行分析的建议。

最佳答案

对于任何熟悉代码的人来说,查找内存泄漏始终非常困难,更不用说到目前为止了。所以我只能给你一些建议:


您得到了一个堆转储,通过您自己的对象进行过滤并分析了谁创建了最多的
运行您的应用程序并使用VisualVM对其进行监视,稍微使用一下该应用程序,然后强制运行GC ... 10个对象中有9个对象的数量没有显着减少或没有完全重置是内存泄漏

关于java - 如何分析带有常见泄漏嫌疑人的heapdump,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59572585/

10-10 09:41