本文講解了如何設置JavaVM參數實現在Full
GC前后自動生成Dump。共有三個VM參數需要設置:
HeapDumpBeforeFullGC 實現在Full GC前dump。
HeapDumpBeforeFullGC 實現在Full GC后dump。
HeapDumpPath?設置Dump保存的路徑
設置這些參數的方法,這里總結了四種,大家可以根據情況選擇使用。
方法1:
啟動jvm時,帶上這些參數(這個方法適合開發測試環境)
Java?-Xms200m -Xmx200m -Xmn50m
-XX:PermSize=30m -XX:+HeapDumpBeforeFullGC -XX:+HeapDumpAfterFullGC
-XX:HeapDumpPath=e:\dump testgc.Main
方法2:
使用JConsole等工具調用JMX服務的com.sum.management.HotSpotDiagnostic.setVMOption方法來實現。
第一個參數為HeapDumpBeforeFullGC, 第二個參數為true表示在Full GC前進行dump.
第一個參數為HeapDumpAfterFullGC, 第二個參數為true表示在Full GC前進行dump.
方法3:
使用jinfo命令進行設置。(生產環境常用的方法)
第一步,通過jps獲得java程序的pid
#jps?5940Main?3012 Jps
第二步,調用jinfo命令設置VM參數
#jinfo -flag
+HeapDumpBeforeFullGC?5940?#jinfo -flag
+HeapDumpAfterFullGC?5940
方法4:
開發程序調用JMX的API來實現
得到了Full GC前后的dump, 接下來就可以使用一些分析工具(如MAT)來分析Full GC產生的原因了。