基本上,我在linux机器上运行java进程并能够使用以下命令捕获JVM内存的堆转储,但我认为它可能不是正确的方法,因为我捕获堆的时间可能没有完整和正确的对象状态(它们可能仍在运行,因为进程仍在运行)。
所以我想知道如何进行完整流程执行的堆转储。现在我没有得到任何内存不足的问题,但麻烦射击找到哪些对象使用更高的内存或疑似泄漏。
jmap <pid> <filepathtogeneratedheap>
实际上,对于运行进程,生成堆转储并不是一个好主意。我通过让JVM在抛出OutOfMemoryError时生成堆转储来解决这个问题