鍍金池/ 問(wèn)答/Java/ 頻繁full gc問(wèn)題排查步驟,求教~

頻繁full gc問(wèn)題排查步驟,求教~

比如,某個(gè)下午機(jī)器隔一段時(shí)間就full gc七八次,該如何入手去查詢(xún)問(wèn)題,感覺(jué)看jstack的日志,也看不出來(lái)啥,萌新求助~

回答
編輯回答
懶洋洋

1、保存線(xiàn)程棧:jstack -l pid > jstack.log
2、保存heap:jmap -dump:format=b,file=heap.hprof pid
3、使用mat分析heap,看是否有內(nèi)存泄露
4、分析gc log(如果之前沒(méi)有開(kāi)啟gc log,要開(kāi)啟,然后復(fù)現(xiàn),再拿gc log來(lái)查看),看是否是gc參數(shù)配置的不恰當(dāng)

附開(kāi)啟gclog的參數(shù)

  • java8及之前的版本
-XX:+PrintGCDetails 
-XX:+PrintGCDateStamps 
-XX:+PrintGCTimeStamps
-XX:+PrintTenuringDistribution 
-Xloggc:/some-path/gc-$(date +%Y%m%d-%H%M%S).log
-XX:+UseGCLogFileRotation
-XX:NumberOfGCLogFiles=5
-XX:GCLogFileSize=10M
  • java9及以上版本
-Xlog:gc*=info:file=/some-path/gc-%t-%p.log:timemillis,pid:filecount=5,filesize=10M
2017年6月19日 08:32