我是堆分析的新手。我们一直在Web应用程序中使用spring boot。最近,堆使用率变得过高。为了使用Mat和JProfiler之类的工具分析堆转储,我使用执行器下载它,如下所示:
http://localhost:8080/actuator/heapdump
但是每次我进行堆转储时,堆使用率都会降低。我怀疑那段时间可能是GC踢。如果我错了,请纠正。因此,我无法捕获实际情况。有什么办法可以在不触发GC的情况下进行堆转储?还是存在堆内存使用量超过500 MB的情况,就会生成heapdump。
最佳答案
您可以执行@Scheduled
任务来定期获取堆使用情况并生成500 MB的堆转储。您可以使用ManagementFactory.getMemoryPoolMXBeans();
,它显示了不同的堆区域及其用法。
在外部执行此操作:
您可以使用jstat对堆使用情况进行外部监视。将其包装在可以分析jstat -gc
的脚本中,然后使用jmap
获取堆转储。
关于java - 捕获SpringDump应用程序的heapdump,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55532652/