jvm gc 日誌和dump參數

  在JVM出現內存溢出或泄露時,爲便於排查和定位,需要JVM的啓動上增加相應的參數。主要是GC日誌和內存DUMP參數。詳細如下。 
1.GC日誌和內存DUMP參數配置 
    
    本文參數配置基於各廠商的JDK 6.0版本,低版本或高版本的參數有可能不同。各廠商JVM GC日誌和內存DUMP參數配置如下: 
(1)Oracle  JVM
-Xloggc:${目錄}/managed1_gc.log 
-XX:+HeapDumpOnOutOfMemoryError 
-XX:HeapDumpPath=${目錄} 
(2)HP JVM
-Xverbosegc:file=${目錄}/mananged1_gc.log 
-XX:+HeapDumpOnOutOfMemoryError  -XX:+HeapDumpOnCtrlBreak   
-XX:HeapDumpPath=${目錄} 
(3)IBM JVM 
-XverboseGClog: ${目錄}/mananged1_gc.log 
-Xdump:heap:events=user,file=${目錄}/pid%uid%pid.phd 

2.GC日誌參數說明 
2.1.Oracle JVM 
1、配置方法 
   在JAVA_OPTIONS變量中增加 -Xloggc:${目錄}/managed1_gc.log。 
2、參數說明 
   (1)在集羣環境下,建議按照節點名命名GC日誌文件,例如節點1的名稱爲managed1,則日誌文件命名爲managed1_gc.log。 
   (2)備註:如果只有-verbose:gc參數,gc日誌會輸出到控制檯上,如果-verbose:gc和-Xloggc:filename參數共存,以-Xloggc爲準。-XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps 可以增加,但是增加後產生的gc日誌用HPjemeter工具不能識別,其中-XX:+PrintGC參數和單獨的-verbose:gc或者單獨的-Xloggc的輸出是一樣的,都是簡要信息。 
2.2.HP JVM 
1、配置方法 
   在JAVA_OPTIONS變量中增加 -Xverbosegc:file=${目錄}/mananged1_gc.log。 
2、參數說明 
   (1)在集羣環境下,建議按照節點名命名GC日誌文件,例如節點1的名稱爲managed1,則日誌文件命名爲managed1_gc.log。 
   (2)HP JVM的GC日誌文件生成時會自動增加進程號(PID),例如:managed1_gc.log.2252,其中2252爲Java進程ID。 
2.3.IBM JVM 
1、配置方法 
   在JAVA_OPTIONS變量中增加 -XverboseGClog:${目錄}/mananged1_gc.log。 
2、參數說明 
   在集羣環境下,建議按照節點名命名GC日誌文件,例如節點1的名稱爲managed1,則日誌文件命名爲managed1_gc.log。 

3.內存DUMP參數說明 
3.1.Oracle JVM 
1、配置方法 
   在JAVA_OPTIONS變量中增加 
-XX:+HeapDumpOnOutOfMemoryError  -XX:HeapDumpPath=${目錄}。 
2、參數說明 
   (1)-XX:+HeapDumpOnOutOfMemoryError參數表示當JVM發生OOM時,自動生成DUMP文件。 
   (2)-XX:HeapDumpPath=${目錄}參數表示生成DUMP文件的路徑,也可以指定文件名稱,例如:-XX:HeapDumpPath=${目錄}/java_heapdump.hprof。如果不指定文件名,默認爲:java_<pid>_<date>_<time>_heapDump.hprof。 
   (3)Oracle JVM的6.0版本去掉了-XX:+HeapDumpOnCtrlBreak參數,如果需要產生DUMP文件,請採用jmap命令,命令行格式如下: 
       jmap  -dump:format=b,file=managed1_heapdump.hprof  <pid> 
   其中managed1_heapdump.hprof表示生成的DUMP文件名稱,pid表示Java進程號。 
3.2.HP JVM 
1、配置方法 
   在JAVA_OPTIONS變量中增加 
-XX:+HeapDumpOnOutOfMemoryError  -XX:+HeapDumpOnCtrlBreak 
-XX:HeapDumpPath=${目錄}。 
2、參數說明 
   (1)-XX:+HeapDumpOnOutOfMemoryError參數表示當JVM發生OOM時,自動生成DUMP文件。 
   (2)-XX:HeapDumpPath=${目錄}參數表示生成DUMP文件的路徑,也可以指定文件名稱,如果不指定文件名,默認文件示例如下:java_pid2821.hprof.1313372696928,其中2821爲Java進程號,1313372696928爲自動生成的數字。 
   (3)-XX:+HeapDumpOnCtrlBreak參數表示可以通過kill  -3  <pid>根據需要產生DUMP文件。 
3.3.IBM JVM 
1、配置方法 
   在JAVA_OPTIONS變量中增加 
-Xdump:heap:events=user,file=${目錄}/pid%uid%pid.phd。 
2、參數說明 
   (1)-Xdump:heap:events=user,file=${目錄}/pid%uid%pid.phd表示可以根據需要通過kill  -3  <pid>產生DUMP文件,%uid和%pid爲變量。生成的文件名稱示例:pidtestuser303118.phd,其中testuser爲uid,303118爲pid;IBM JVM採用kill -3同時會生成另外一個javacore文件,文件示例:javacore.20110815.173356.303118.0002.txt。 
(2)IBM JVM當發生OOM時會自動生成DUMP文件,無需額外的參數配置。 
2 
4 
分享到:  
參考知識庫
OpenCV知識庫2  關注 | 555  收錄
軟件測試知識庫63  關注 | 244  收錄
C++知識庫525  關注 | 579  收錄
C語言知識庫667  關注 | 1842  收錄
評論
1 樓 bo_hai 2015-10-06  
有用,實用。
whzhengzy
  • 瀏覽: 62728 次
  • 性別: Icon_minigender_1
  • 來自: China
社區版塊
存檔分類
最新評論
發佈了177 篇原創文章 · 獲贊 147 · 訪問量 166萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章