優(yōu)化我的IDEA GC

IDEA是個好東西变抽,可以說是地球上最好的Java開發(fā)工具础拨,但是偶爾也會卡頓,仔細(xì)想想IDEA也是Java開發(fā)的瞬沦,會不會和GC有關(guān)太伊,于是就有了接下來對IDEA的GC進(jìn)行調(diào)優(yōu);

IDEA默認(rèn)JVM參數(shù):
-Xms128m
-Xmx750m
-XX:MaxPermSize=350m
-XX:ReservedCodeCacheSize=240m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50

第一次優(yōu)化

以默認(rèn)參數(shù)啟動完成后逛钻,利用jstat -gcutil pid 3s 查看GC情況:

Paste_Image.png

圖中反應(yīng)出了1個非常明顯的問題:Old區(qū)會擴(kuò)容僚焦。這是因?yàn)閄ms和Xmx值不一致引起的;所以對JVM參數(shù)的第一個優(yōu)化點(diǎn)就是Xms和Xmx曙痘;
第一次優(yōu)化后的JVM參數(shù)為:
-Xms1024m
-Xmx1024m
-Xmn372m
-XX:MaxPermSize=350m
-XX:ReservedCodeCacheSize=240m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50

第二次優(yōu)化

經(jīng)過第一次優(yōu)化后芳悲,再次啟動IDEA,得到如下的GC日志:

Paste_Image.png

很明顯Metaspace會出現(xiàn)擴(kuò)容的情況边坤,所以第二次優(yōu)化點(diǎn)為:-XX:MetaspaceSize和-XX:MaxMetaspaceSize
第二次優(yōu)化后的JVM參數(shù)為:
-Xms1024m
-Xmx1024m
-Xmn372m
-XX:MetaspaceSize=256m
-XX:MaxMetaspaceSize=512m
-XX:ReservedCodeCacheSize=240m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50

說明:由于我用的是JDK8名扛,所以刪除了參數(shù)-XX:MaxPermSize=350m,取而代之的是-XX:MetaspaceSize=256m和-XX:MaxMetaspaceSize=512m茧痒,如果讀者你用的是JDK7及以前的版本肮韧,那么請用-XX:PermSize=256m和-XX:MaxPermSize=512m

總結(jié)

經(jīng)過第二次優(yōu)化后,啟動IDEA的GC情況如下:

Paste_Image.png

由圖所示, GC情況比較健康了旺订,沒有FGC东涡,且GCT有明顯的下降芜壁,唯一的缺陷就是YGC的平均耗時過長,這是由于我的電腦配置較低,CPU是雙核心的緣故掀潮,一般生產(chǎn)環(huán)境Linux服務(wù)器上YGC的時間是幾十毫秒級別米辐,超過100ms就要注意排查是否有問題了洪己;

寫在最后

加上幾個經(jīng)驗(yàn)參數(shù),最終的JVM參數(shù)如下:
-Xms1024m
-Xmx1024m
-Xmn372m
-XX:MetaspaceSize=256m
-XX:MaxMetaspaceSize=512m
-XX:ReservedCodeCacheSize=240m
-XX:+UseConcMarkSweepGC
-XX:+UseParNewGC
-XX:+CMSParallelRemarkEnabled
-XX:+CMSScavengeBeforeRemark
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly
-XX:+UseCMSCompactAtFullCollection
-XX:CMSFullGCsBeforeCompaction=3
-XX:SoftRefLRUPolicyMSPerMB=50

說明:

  • -XX:+UseParNewGC:顯示聲明Young區(qū)垃圾回收算法届良,也可以不顯示聲明(顯示聲明為了讓JVM參數(shù)更易懂),因?yàn)镺ld區(qū)申明為CMS GC的話圣猎,Young區(qū)默認(rèn)就是ParNew士葫;
  • -XX:+CMSParallelRemarkEnabled:CMS的remark階段多線程并行;該參數(shù)默認(rèn)就是true样漆,所以這里只是顯示聲明为障;
  • -XX:+CMSScavengeBeforeRemark:CMS GC前執(zhí)行一次Minor GC,即YGC放祟;
  • -XX:CMSInitiatingOccupancyFraction=75:如果Old區(qū)聲明為CMS GC的話鳍怨,該參數(shù)的默認(rèn)值為92,比較大跪妥,建議調(diào)小到75鞋喇,減少Promotion failed的概率;
  • -XX:+UseCMSInitiatingOccupancyOnly:只有當(dāng)Old區(qū)達(dá)到75%時才觸發(fā)CMS GC眉撵,如果不聲明的話侦香,還有很多種其他條件觸發(fā)CMS GC;
  • -XX:+UseCMSCompactAtFullCollection:CMS是標(biāo)記清理算法纽疟,每次回收后有內(nèi)存碎片問題罐韩,該參數(shù)會整理內(nèi)存碎片,但是會影響暫停時間污朽;
  • -XX:CMSFullGCsBeforeCompaction=3:表示經(jīng)過多少次foreground CMS GC后對Old區(qū)做一次壓縮散吵。由于UseCMSCompactAtFullCollection這個參數(shù)為true整理內(nèi)存碎片時會影響性能,但是碎片問題也需要解決或者緩解蟆肆。所以矾睦,設(shè)置適當(dāng)調(diào)整該參數(shù)的值,在執(zhí)行多次foreground CMS GC后才對Old區(qū)進(jìn)行壓縮炎功;

寫在最后:我們常說的CMS GC是Backgroud CMS GC, 會經(jīng)歷我們熟知的5個階段: 初始化標(biāo)記->并行標(biāo)記->重新標(biāo)記->并行清理->并行重置枚冗。而foreground CMS GC被觸發(fā)時,會停止所有的java線程蛇损,同時終止Backgroud CMS GC赁温,串行回收Old區(qū)的垃圾,對系統(tǒng)吞吐量和性能影響非常大淤齐;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末束世,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子床玻,更是在濱河造成了極大的恐慌,老刑警劉巖沉帮,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锈死,死亡現(xiàn)場離奇詭異贫堰,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)待牵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門其屏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人缨该,你說我怎么就攤上這事偎行。” “怎么了贰拿?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵蛤袒,是天一觀的道長。 經(jīng)常有香客問我膨更,道長妙真,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任荚守,我火速辦了婚禮珍德,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘矗漾。我一直安慰自己锈候,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布敞贡。 她就那樣靜靜地躺著泵琳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嫡锌。 梳的紋絲不亂的頭發(fā)上虑稼,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機(jī)與錄音势木,去河邊找鬼蛛倦。 笑死,一個胖子當(dāng)著我的面吹牛啦桌,可吹牛的內(nèi)容都是我干的溯壶。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼甫男,長吁一口氣:“原來是場噩夢啊……” “哼且改!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起板驳,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤又跛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后若治,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體慨蓝,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡感混,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了礼烈。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弧满。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖此熬,靈堂內(nèi)的尸體忽然破棺而出庭呜,到底是詐尸還是另有隱情,我是刑警寧澤犀忱,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布募谎,位于F島的核電站,受9級特大地震影響峡碉,放射性物質(zhì)發(fā)生泄漏近哟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一鲫寄、第九天 我趴在偏房一處隱蔽的房頂上張望吉执。 院中可真熱鬧,春花似錦地来、人聲如沸戳玫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咕宿。三九已至,卻和暖如春蜡秽,著一層夾襖步出監(jiān)牢的瞬間府阀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工芽突, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留试浙,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓寞蚌,卻偏偏與公主長得像田巴,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子挟秤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容