在发生内存溢出错误 java.lang.OutOfMemoryError
时, JVM自动执行堆内存转储,以方便事后进行排查和分析。
JVM提供了一个命令行启动参数 HeapDumpOnOutOfMemoryError
, 使用的格式为:
java -XX:+HeapDumpOnOutOfMemoryError
HeapDumpPath
选项指定转储路径,则会自动保存到启动目录下,文件名的格式为: java_pid<pid>.hprof
HeapDumpPath
参数的使用示例如下: java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=<file-or-dir-path>
对于某个应用服务,启动脚本中设置内存溢出转储路径为/opt/logs/app,文件名为heapdump.hprof。如下: