在 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 可用於診斷它們。