G1收集器

一牵舵、Young gc(STW)

觸發(fā)時(shí)機(jī):eden空間不足時(shí)绰姻,G1觸發(fā)young gc回收新生代空間凰慈。
回收對(duì)象:每次young gc會(huì)選定所有新生代region,同時(shí)根據(jù)停頓時(shí)間動(dòng)態(tài)調(diào)整新生代所占region個(gè)數(shù)來控制young gc開銷钳榨。如果存在大對(duì)象舰罚,默認(rèn)也會(huì)回收Humongous region。
回收算法:整體來看屬于標(biāo)記-整理重绷,從局部region角度來看屬于復(fù)制算法沸停。
回收過程:young gc主要過程分為:
Root掃描膜毁,RS掃描昭卓,Evacuation(對(duì)象拷貝)。

二瘟滨、Mixed gc

觸發(fā)時(shí)機(jī)
主要由以下三個(gè)參數(shù)控制候醒,回收過程會(huì)詳解
InitiatingHeapOccupancyPercent(設(shè)置觸發(fā)并發(fā)標(biāo)記周期的Java堆占用閾值,默認(rèn)45)杂瘸。
G1MixedGCLiveThresholdPercent (會(huì)被MixGC的Region中存活對(duì)象占比倒淫,默認(rèn)85),old generation region中的存活對(duì)象的占比败玉,只有小于此參數(shù)敌土,才會(huì)被選入CSet,避免mixed gc大量對(duì)象復(fù)制运翼。
G1HeapWastePercent(觸發(fā)Mixed GC的可回收空間百分比返干,默認(rèn)10),在global concurrent marking結(jié)束之后血淌,我們可以知道old gen regions中有多少空間要被回收矩欠,在每次YGC之后和再次發(fā)生Mixed GC之前,會(huì)檢查垃圾占比是否達(dá)到此參數(shù)悠夯,只有達(dá)到了癌淮,才會(huì)觸發(fā)Mixed GC。
回收對(duì)象:所有新生代region和部分老年代region沦补,G1會(huì)選擇回收部分老年代region來滿足MaxGCPauseMillis(最大停頓時(shí)間)乳蓄。
回收算法:整體來看屬于標(biāo)記-整理,從局部region角度來看屬于復(fù)制算法夕膀。
回收過程
mixed gc主要過程分為全局并發(fā)標(biāo)記和Evacuation對(duì)象拷貝栓袖,全局并發(fā)標(biāo)記結(jié)束后會(huì)觸發(fā)一次Young gc,接著進(jìn)行mixed gc(滿足條件的情況下)店诗。

  • 全局并發(fā)標(biāo)記
    達(dá)到InitiatingHeapOccupancyPercent閾值會(huì)觸發(fā)全局并發(fā)標(biāo)記裹刮,該階段又可以近一步細(xì)分成下面幾個(gè)步驟:
    初始標(biāo)記(initial mark,STW)庞瘸。它標(biāo)記了從GC Root開始直接可達(dá)的對(duì)象捧弃。初始標(biāo)記階段借用young GC的暫停,因而沒有額外的、單獨(dú)的暫停階段违霞。
    并發(fā)標(biāo)記(Concurrent Marking)嘴办。這個(gè)階段從GC Root開始對(duì)heap中的對(duì)象標(biāo)記,標(biāo)記線程與應(yīng)用程序線程并行執(zhí)行买鸽,并且收集各個(gè)Region的存活對(duì)象信息涧郊。
    最終標(biāo)記(Remark,STW)眼五。標(biāo)記那些在并發(fā)標(biāo)記階段發(fā)生變化的對(duì)象妆艘,將被回收。
    清除垃圾(Cleanup看幼,部分STW)批旺。 清除空Region,這個(gè)階段如果發(fā)現(xiàn)完全沒有活對(duì)象的region就會(huì)將其整體回收到可分配region列表中诵姜。
  • Mixed gc(STW)
    達(dá)到G1HeapWastePercent閾值會(huì)觸發(fā)Mixed gc汽煮,該階段主要做Evacuation(對(duì)象拷貝)。Evacuation階段是全暫停的棚唆。它負(fù)責(zé)把一部分region里的活對(duì)象拷貝到空region里去(并行拷貝)暇赤,然后回收原本的region的空間。Evacuation階段可以自由選擇任意多個(gè)region來獨(dú)立收集構(gòu)成收集集合(collection set宵凌,簡稱CSet)鞋囊,CSet集合中Region的選定依賴于上文中提到的停頓預(yù)測模型和G1MixedGCLiveThresholdPercent閾值,該階段并不evacuate所有有活對(duì)象的region摆寄,只選擇收益高的少量region來evacuate失暴,這種暫停的開銷就可以(在一定范圍內(nèi))可控。
    mixed gc類似CMS對(duì)老年代的major gc微饥,在CMS中其規(guī)則為只要老年代連續(xù)空間大于新生代對(duì)象總大小或歷次晉升老年代平均值就進(jìn)行minor gc逗扒,否則將進(jìn)行major gc。
三欠橘、Full gc(STW)

觸發(fā)條件
1矩肩、metaspace(方法區(qū))可用空間不足。
2肃续、G1在對(duì)象復(fù)制/轉(zhuǎn)移失敗或者沒法分配足夠內(nèi)存(比如巨型對(duì)象沒有足夠的連續(xù)分區(qū)分配)時(shí)黍檩,會(huì)觸發(fā)FullGC。full gc指退化為使用serial old收集器回收的情況始锚,其為單線程STW型收集器刽酱,停頓時(shí)間可達(dá)秒級(jí),對(duì)性能影響極大瞧捌。但在jdk10版本的G1 GC會(huì)有很多優(yōu)化棵里,F(xiàn)ull CG方面润文,將提供并發(fā)標(biāo)記的Full GC方案:Parallelize Mark-Sweep-Compact。

四殿怜、其它

對(duì)象分配:
TLAB:本地線程分配緩沖典蝌,server端默認(rèn)啟用,位于Eden區(qū)头谜。當(dāng)多線程分配內(nèi)存區(qū)塊時(shí)骏掀,因?yàn)閮?nèi)存分配和初始化數(shù)據(jù)是不同的步驟,所以在分配時(shí)需要對(duì)內(nèi)存區(qū)塊上鎖柱告,由此會(huì)引發(fā)區(qū)塊鎖競爭問題截驮。此參數(shù)會(huì)讓線程預(yù)先分配一塊屬于自己的空間(64K-1M),分配時(shí)先在自己的空間上分配末荐,不足時(shí)再申請(qǐng)侧纯,這樣就不存在內(nèi)存區(qū)塊鎖的競爭新锈,提高分配效率甲脏。
Eden:正常對(duì)象分配位置。
Humongous region:大于G1HeapRegionSize閾值(region大忻冒省)的一半块请,會(huì)將對(duì)象分配到一個(gè)或多個(gè)連續(xù)的Humongous region。
參考:
https://www.redhat.com/en/blog/collecting-and-reading-g1-garbage-collector-logs-part-2#
https://blog.csdn.net/qq_27529917/article/details/86664677
http://www.reibang.com/p/548c67aa1bc0

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拳缠,一起剝皮案震驚了整個(gè)濱河市墩新,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌窟坐,老刑警劉巖海渊,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異哲鸳,居然都是意外死亡臣疑,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門徙菠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來讯沈,“玉大人,你說我怎么就攤上這事婿奔∪焙荩” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵萍摊,是天一觀的道長挤茄。 經(jīng)常有香客問我,道長冰木,這世上最難降的妖魔是什么穷劈? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上囚衔,老公的妹妹穿的比我還像新娘挖腰。我一直安慰自己,他們只是感情好练湿,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布猴仑。 她就那樣靜靜地躺著,像睡著了一般肥哎。 火紅的嫁衣襯著肌膚如雪辽俗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天篡诽,我揣著相機(jī)與錄音崖飘,去河邊找鬼。 笑死杈女,一個(gè)胖子當(dāng)著我的面吹牛朱浴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播达椰,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼翰蠢,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了啰劲?” 一聲冷哼從身側(cè)響起梁沧,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蝇裤,沒想到半個(gè)月后廷支,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡栓辜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年恋拍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片啃憎。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡芝囤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出辛萍,到底是詐尸還是另有隱情悯姊,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布贩毕,位于F島的核電站悯许,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏辉阶。R本人自食惡果不足惜先壕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一瘩扼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧垃僚,春花似錦集绰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至改淑,卻和暖如春碍岔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背朵夏。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來泰國打工蔼啦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人仰猖。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓捏肢,卻偏偏與公主長得像,于是被迫代替她去往敵國和親亮元。 傳聞我的和親對(duì)象是個(gè)殘疾皇子猛计,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

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

  • 本文轉(zhuǎn)載于:https://www.cnblogs.com/lsgxeva/p/10231201.html[htt...
    HannahLi_9f1c閱讀 410評(píng)論 0 2
  • 本系列會(huì)持續(xù)更新唠摹。 金三已經(jīng)過去一半了爆捞,即將進(jìn)入面試的高峰期。在BAT面試中勾拉,JVM基本都是必考的系列煮甥。你至少需要...
    mikechen的互聯(lián)網(wǎng)架構(gòu)閱讀 2,083評(píng)論 0 25
  • 區(qū)域化分代式垃圾回收器 簡單介紹G1 GC 官方給G1垃圾收集器設(shè)定的目標(biāo): 在延遲可控的情況下獲得盡可能高的吞吐...
    是echo啊閱讀 146評(píng)論 0 0
  • 推薦指數(shù): 6.0 書籍主旨關(guān)鍵詞:特權(quán)、焦點(diǎn)藕赞、注意力成肘、語言聯(lián)想、情景聯(lián)想 觀點(diǎn): 1.統(tǒng)計(jì)學(xué)現(xiàn)在叫數(shù)據(jù)分析斧蜕,社會(huì)...
    Jenaral閱讀 5,721評(píng)論 0 5
  • 城空了批销,有樹長出來 我的城死了 鑄起它的人洒闸,殺死它的人 不愿因?yàn)檫@件事而驕傲 一座城的終結(jié) 永遠(yuǎn)因?yàn)榻K結(jié)這件事而顯...
    于十六閱讀 2,859評(píng)論 6 17