Arthas分析FullGC問題定位
? ? ? ?對于FullGC那一定不會陌生,一般來說會采用橫切FullGC前置攔截(-XX:+HeapDumpBeforeFullGC)和后置攔截(-XX:+HeapDumpAfterFullGC),導出FullGC發(fā)生前后的heap dump文件,以便于我們進行FullGC原因的分析和定位。
推測分析問題之FullGC的頻率過高
? ? ? ?我們?nèi)绻M梢杂^測到相關的GC回收次數(shù)以及相關的時間,除Java原生的jstat指令之外,還可以通過dashboard看板中的GC子面板(整體部分的右下角)部分,如下圖1所示。
? ? ? ? 我們通過分析以及觀察到相關的FullGC頻率過高,所以可以針對性的獲取相關的FullGC前后n(3~5)組的heap dump文件。分析每次FullGC前后的對象數(shù)量和空間的較為靠前的對象信息,從而得到綜合評判得出FullGC過于頻繁結論,分析的要點:
l分析其創(chuàng)建的數(shù)量過程為什么過多,以及占用內(nèi)存劇增的原因。
l分析其創(chuàng)建的數(shù)量的內(nèi)存空間為什么會生命周期過長會遷移到老年代。
l是否存在擔保分配機制導致直接在老年代分配,以及對象大小是否過大,導致動態(tài)年齡躍升。
l是否提前進入老年代的門檻過低(XX:PretentureSizeThreshold?),導致躍升。
l是否是內(nèi)存分配不符合業(yè)務場景直接進行擴充老年代以及新生代的內(nèi)存分配值,減少FullGC。
推測分析問題之FullGC的時間過長
? ? ? ?當JVM虛擬機出現(xiàn)FullGC且耗時超過1秒的時候,我們就認為FullGC時間過長,如果存在這種情況,就必須重視起來了,至于如何分析FullGC的問題呢?筆者主要總結了一下幾點,希望可以幫助大家排查問題和梳理思路。
l新生代內(nèi)存空間分配過小:如果新生代過小,對象將會過早的晉升至Old區(qū),而Old區(qū)的垃圾回收工作一般較新生代會耗費更多的時間,因此,可利用增大新生區(qū)空間來有效地減少GC的停頓時間
l最優(yōu)的GC回收器:GC回收器是影響GC停止時間的一個十分關鍵的原因,所以個人建議選擇用G1收集器,由于G1回收器是自動調(diào)優(yōu)的,你只需設定一個停止時間的目標,例如:-XX:MaxGCPauseMillis=200。文章來源:http://www.zghlxwxcb.cn/news/detail-586084.html
l發(fā)生了熱交換內(nèi)存&#文章來源地址http://www.zghlxwxcb.cn/news/detail-586084.html
到了這里,關于用Arthas快速定位線上JVM問題!的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!