在JVM出現(xiàn)內存溢出或泄露時,,為便于排查和定位,需要JVM的啟動上增加相應的參數(shù),。主要是GC日志和內存DUMP參數(shù),。詳細如下。 1.GC日志和內存DUMP參數(shù)配置 本文參數(shù)配置基于各廠商的JDK 6.0版本,,低版本或高版本的參數(shù)有可能不同,。各廠商JVM GC日志和內存DUMP參數(shù)配置如下: (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日志參數(shù)說明 2.1.Oracle JVM 1、配置方法 在JAVA_OPTIONS變量中增加 -Xloggc{目錄}/managed1_gc.log,。 2,、參數(shù)說明 (1)在集群環(huán)境下,建議按照節(jié)點名命名GC日志文件,例如節(jié)點1的名稱為managed1,,則日志文件命名為managed1_gc.log,。 (2)備注:如果只有-verbose:gc參數(shù),gc日志會輸出到控制臺上,,如果-verbose:gc和-Xloggc:filename參數(shù)共存,,以-Xloggc為準。-XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps 可以增加,,但是增加后產(chǎn)生的gc日志用HPjemeter工具不能識別,,其中-XX:+PrintGC參數(shù)和單獨的-verbose:gc或者單獨的-Xloggc的輸出是一樣的,都是簡要信息,。 2.2.HP JVM 1,、配置方法 在JAVA_OPTIONS變量中增加 -Xverbosegc:file=${目錄}/mananged1_gc.log。 2,、參數(shù)說明 (1)在集群環(huán)境下,,建議按照節(jié)點名命名GC日志文件,例如節(jié)點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,、參數(shù)說明 在集群環(huán)境下,建議按照節(jié)點名命名GC日志文件,,例如節(jié)點1的名稱為managed1,,則日志文件命名為managed1_gc.log。 3.內存DUMP參數(shù)說明 3.1.Oracle JVM 1,、配置方法 在JAVA_OPTIONS變量中增加 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${目錄},。 2、參數(shù)說明 (1)-XX:+HeapDumpOnOutOfMemoryError參數(shù)表示當JVM發(fā)生OOM時,,自動生成DUMP文件,。 (2)-XX:HeapDumpPath=${目錄}參數(shù)表示生成DUMP文件的路徑,也可以指定文件名稱,,例如:-XX:HeapDumpPath=${目錄}/java_heapdump.hprof。如果不指定文件名,,默認為:java_<pid>_<date>_<time>_heapDump.hprof,。 (3)Oracle JVM的6.0版本去掉了-XX:+HeapDumpOnCtrlBreak參數(shù),如果需要產(chǎn)生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、參數(shù)說明 (1)-XX:+HeapDumpOnOutOfMemoryError參數(shù)表示當JVM發(fā)生OOM時,,自動生成DUMP文件,。 (2)-XX:HeapDumpPath=${目錄}參數(shù)表示生成DUMP文件的路徑,也可以指定文件名稱,,如果不指定文件名,,默認文件示例如下:java_pid2821.hprof.1313372696928,其中2821為Java進程號,,1313372696928為自動生成的數(shù)字,。 (3)-XX:+HeapDumpOnCtrlBreak參數(shù)表示可以通過kill -3 <pid>根據(jù)需要產(chǎn)生DUMP文件。 3.3.IBM JVM 1,、配置方法 在JAVA_OPTIONS變量中增加 -Xdump:heap:events=user,file=${目錄}/pid%uid%pid.phd,。 2、參數(shù)說明 (1)-Xdump:heap:events=user,file=${目錄}/pid%uid%pid.phd表示可以根據(jù)需要通過kill -3 <pid>產(chǎn)生DUMP文件,,%uid和%pid為變量,。生成的文件名稱示例:pidtestuser303118.phd,其中testuser為uid,,303118為pid,;IBM JVM采用kill -3同時會生成另外一個javacore文件,文件示例:javacore.20110815.173356.303118.0002.txt,。 (2)IBM JVM當發(fā)生OOM時會自動生成DUMP文件,,無需額外的參數(shù)配置。 |
|
來自: 昵稱13876790 > 《JAVA》