我是堆分析的新手。我们一直在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/

10-09 00:48