在 OutOfMemoryError 上生成堆转储
注意: 此示例基于 Oracle JVM 实现。
诸如 jmap
,jconsole
和 jvisualvm
之类的内置工具在 JDK 中可用,可用于生成和分析从正在运行的 JVM 应用程序中获取的堆内存转储。但是,在不使用 JDK 工具的情况下生成堆转储的一个选项是添加 VM 参数 -XX:+HeapDumpOnOutOfMemoryError
,它告诉 JVM 在发生 OutOfMemoryError 时自动生成堆转储,并使用参数 -XX:HeapDumpPath
指定堆转储的路径。
另请参阅: Java HotSpot VM 选项 ,具体为:
-XX:HeapDumpPath =。/ java_pid.hprof 堆转储的目录或文件名的路径。管理。 (在 1.4.2 更新 12,5.0 更新 7 中引入。)
-XX:-HeapDumpOnOutOfMemoryError 在抛出 java.lang.OutOfMemoryError 时将堆转储到文件。管理。 (在 1.4.2 更新 12,5.0 更新 7 中引入。)
如果使用 CMS 或 G1 等并发收集器,则可以将 FullGC 视为故障模式,使用 HeapDumpBeforeFullGC
或 HeapDumpAfterFullGC
可用于诊断它们。