如何记录和生成 运行 进程的 JVM 堆转储直到它完成

how to record and generate JVM heap dump of running process till it completes

基本上,我是 运行 linux 机器上的一个 java 进程,能够使用以下命令捕获 JVM 内存的堆转储,但我认为它可能不是正确的方法是因为我捕获堆的时间可能没有完整和正确的对象状态(它们可能仍然是 运行 因为进程仍然是 运行)。

所以我想知道如何获取整个进程执行的堆转储。现在我没有遇到任何内存不足的问题,而是要进行故障排除以查找哪些对象正在使用更高的内存或疑似泄漏。

jmap <pid> <filepathtogeneratedheap>

实际上,对于运行进程,生成堆转储并不是一个好主意。我通过让 JVM 在抛出 OutOfMemoryError

时生成堆转储来解决这个问题