内存不足使用Jmap在OutOfMemoryError上转储Java堆文件
我一直在尝试使用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
# 1 楼答案
你把两件不同的事情搞混了:
jmap
从正在运行的进程中捕获堆转储,就像您所做的那样。见https://docs.oracle.com/javase/7/docs/technotes/tools/share/jmap.html李>OOM
的java进程上使用-XX:+HeapDumpOnOutOfMemoryError
。如果发生异常,将向当前目录写入转储。见https://docs.oracle.com/javase/7/docs/webnotes/tsg/TSG-VM/html/clopts.html#gbzrr