JAVA GC調優零碎記錄
是否需要進行GC調優
決定是否進行Java GC調優,前提是主要看新生代的Minor GC和老年代的FULL GC 的GC頻率和每次GC停頓的時間對於業務來說是否可接受,一般滿足以下條件,可不用考慮GC調優(僅參考,具體還要看業務)
1 MinorGC執行的很快(小於50ms)
2 MinorGC執行的並不頻繁(大概10秒一次)
3 FullGC執行的很快(小於1s)
4 FullGC執行的並不頻繁(10分鐘一次)
如何監控
1、啟動時指定引數,打印出日誌
-Xloggc:/var/log/hadoop-hdfs/$USER/gc.log-`date +'%Y%m%d%H%M'` -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps
2、使用命令列
jstat -gc 26990 1000 10 (每秒展示一次,總共展示10次,記憶體各區使用情況及總的GC情況) //檢視記憶體實際使用類,物件 jmap -heap 25856 (在CMS GC的情況下可能造成程序掛起,檢視記憶體各區域used,free情況,以及記憶體引數配置,執行很快) jmap -histo -F 4191 (能查到在記憶體裡哪些類,類有多少例項,佔多少空間,注意使用該命令時,比較慢,程序暫停對外工作) jmap –dump:format=b,file=test.bin 3500 //生成dump檔案,可再用visualvm視覺化分析?在java bin目錄下有jvisualvm,若無響應指定-F,用jhat分析dump檔案功能比較弱, -dump:[live,]format=blive指定只輸出活的物件到檔案 //檢視虛擬機器內部執行緒 jstack -l -F 22595 (注意執行比較慢) //檢視jvm顯示指定的引數和隱式的預設引數 Jps –v //檢視各個程序的顯示引數 Jinfo –flag CMSInitiatingOccupancyFractionpid (檢視某個程序某個引數值)