在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文件,無需額外的參數配置。
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
踩
踩
發表評論
- 瀏覽: 62728 次
- 性別:
- 來自: China
最近訪客 更多訪客>>
最新評論
-
bo_hai: 有用,實用。
JVM GC日誌和內存DUMP參數配置 -
ironsabre: 我們也遇到你說的這個問題了。 但是,如何來保證weblogic ...
關於WebLogic集羣多播地址方面的問題解決 -
forcer521: 非常不錯,試試去。
應用日誌文件沒有生成(log4j+spring) -
fxl2375: 解決了,鬆了一口氣,不過我加CLASSPATH的時候jar後面 ...
WebLogic 10gR3版本的CR380042_103GA.jar補丁 -
whzhengzy: 見附件............................ ...
WebLogic 10gR3版本的CR380042_103GA.jar補丁
參考知識庫