JVM調(diào)優(yōu) 之 調(diào)整G1HeapRegionSize

1. 背景

線上某一個服務(wù)雖然沒有Full GC, 但是Young GC耗時一直居高不下橘荠,更重要的是Olden區(qū)的最大使用量與日遞增个扰。集群機器配置是8C16G了嚎, 使用的是G1垃圾回收器, 目標(biāo)停頓時間是200ms咧七, Xmx和Xms配置是12.8G(機器內(nèi)存的80%)衰齐。

Young GC次數(shù)與耗時如圖1所示,Eden继阻、Survivor耻涛、老年代使用情況如圖2、3瘟檩、4所示抹缕,為展示效果,時間段截取某次發(fā)布后的多天墨辛,可以明顯地看到老年代的最大使用量一直在遞增卓研。

圖1 Young GC次數(shù)與耗時
圖2 Eden使用情況
圖3 Survivor使用情況
圖4 老年代使用情況

2. 排查與優(yōu)化

剛開始懷疑是有內(nèi)存泄露,但是通過MAT排查沒有發(fā)現(xiàn)問題睹簇,從老年代使用情況來看鉴分,不斷地有對象進入老年代。在排除其他可能后带膀,將懷疑的目光聚集在Region Size。該服務(wù)是一個方案排序服務(wù)橙垢,報文比較大垛叨,幾兆到十幾兆不等。

我們知道G1垃圾收集器與之前垃圾收集器最大的不同就是化整為零柜某,將內(nèi)存區(qū)域分成多個Region嗽元,每個Region可能是E、S喂击、O剂癌、H的一種,如圖5所示翰绊。

圖5 G1內(nèi)存布局

其中H代表Humongous佩谷,表示這些Region存儲的是巨大對象(humongous object,H-obj)监嗜,即大小大于等于region一半的對象谐檀。H-obj有如下幾個特征:

  • H-obj直接分配到老年代,防止被反復(fù)拷貝移動裁奇。
  • H-obj在global concurrent marking階段的cleanup 和 full GC階段回收桐猬。
  • 在分配H-obj之前先檢查是否超過 initiating heap occupancy percent和the marking threshold, 如果超過的話,就啟動global concurrent marking刽肠,為的是提早回收溃肪,防止 evacuation failures 和 full GC免胃。

Region size通過heapSize/2048計算得到,也可以通過參數(shù)-XX:G1HeapRegionSize=32m指定(其中32m指定region size為32M)惫撰,Region size必須是2的指數(shù)羔沙,取值范圍從1M到32M。針對于12.8G的堆內(nèi)存润绎,Region Size是4M撬碟, 前面提到內(nèi)部有很多對象的大小為幾兆到十幾兆,遠大于4M的一半莉撇,因此這些對象會被分配到H區(qū)呢蛤,造成老年代的使用不斷增加。

將Region大小調(diào)到16M或者32M時棍郎,GC情況會有明顯的好轉(zhuǎn)其障,當(dāng)region size 為32M時(16M效果近似),Young GC次數(shù)與耗時如圖6所示涂佃,Eden励翼、Survivor、老年代使用情況如圖7辜荠、8汽抚、9所示。

  • Young GC次數(shù):調(diào)整前每分鐘平均10次左右伯病,調(diào)整后為5次左右
  • Young GC耗時:調(diào)整前平均耗時400ms造烁,調(diào)整后50ms
  • Eden使用情況: 調(diào)整前平均2GB,調(diào)整后3.3GB
  • Survivor使用情況:調(diào)整前24MiB午笛,調(diào)整后50MiB
  • 老年代使用情況: 調(diào)整前不斷增加惭蟋,調(diào)整后穩(wěn)定在295MiB
圖6 調(diào)整后Young GC次數(shù)與耗時
圖7 調(diào)整后Eden使用情況
圖8 調(diào)整后Survivor使用情況
圖9 調(diào)整后老年代使用情況
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市药磺,隨后出現(xiàn)的幾起案子告组,更是在濱河造成了極大的恐慌,老刑警劉巖癌佩,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件木缝,死亡現(xiàn)場離奇詭異,居然都是意外死亡围辙,警方通過查閱死者的電腦和手機氨肌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來酌畜,“玉大人怎囚,你說我怎么就攤上這事。” “怎么了恳守?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵考婴,是天一觀的道長。 經(jīng)常有香客問我催烘,道長沥阱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任伊群,我火速辦了婚禮考杉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘舰始。我一直安慰自己崇棠,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布丸卷。 她就那樣靜靜地躺著枕稀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谜嫉。 梳的紋絲不亂的頭發(fā)上萎坷,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天,我揣著相機與錄音沐兰,去河邊找鬼哆档。 笑死,一個胖子當(dāng)著我的面吹牛住闯,可吹牛的內(nèi)容都是我干的虐呻。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼寞秃,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了偶惠?” 一聲冷哼從身側(cè)響起春寿,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎忽孽,沒想到半個月后绑改,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡兄一,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年厘线,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片出革。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡造壮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情耳璧,我是刑警寧澤成箫,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站旨枯,受9級特大地震影響蹬昌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜攀隔,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一皂贩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧昆汹,春花似錦明刷、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至败潦,卻和暖如春本冲,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背劫扒。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工檬洞, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人沟饥。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓添怔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親贤旷。 傳聞我的和親對象是個殘疾皇子广料,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,055評論 2 355

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