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