当使用Jmap在给定的Java进程上发生OutOfMemoryError时,我一直试图转储堆文件。
我已经能够转储堆文件,但是我想将HeapDumpOnOutOfMemoryError标志添加到Jmap中,但是我认为我做错了什么。难道我做错了什么?我尝试过:
jmap -J-XX:+HeapDumpOnOutOfMemoryError -dump:live,file=/home/eduardo2/dumpfile.hprof 18763
当我运行上面的代码时,它只会显示以下内容-但它不会等待OutOfMemoryError:
>> Dumping heap to /home/eduardo2/dump21file.hprof ...
>> Heap dump file created
答案 0 :(得分:4)
您正在混淆两种不同的东西:
jmap
从正在运行的进程中捕获堆转储。参见https://docs.oracle.com/javase/7/docs/technotes/tools/share/jmap.html。-XX:+HeapDumpOnOutOfMemoryError
的java进程上使用OOM
。如果发生异常,转储将被写入当前目录。参见https://docs.oracle.com/javase/7/docs/webnotes/tsg/TSG-VM/html/clopts.html#gbzrr