在 OutOfMemoryError 上生成堆转储

注意: 此示例基于 Oracle JVM 实现。

诸如 jmapjconsolejvisualvm 之类的内置工具在 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 视为故障模式,使用 HeapDumpBeforeFullGCHeapDumpAfterFullGC 可用于诊断它们。