垃圾收集器

Serial 收集器

單線程收集器箭启,但它的“單線程”的意義并不僅僅說明它只會(huì)使用一個(gè)CPU或者一條收集線程去完成垃圾收集工作,最重要的是在它進(jìn)行垃圾收集時(shí)哥蔚,必須暫停其他所有的工作線程伞梯,直到它收集結(jié)束【笞玻“stop the world”這個(gè)名字也許聽起來挺酷讲仰,但這項(xiàng)工作實(shí)際上是由虛擬機(jī)在后臺(tái)自動(dòng)發(fā)起和自動(dòng)完成的,在用戶不可見的情況下把用戶正常工作的線程全部停掉痪蝇,這對(duì)很多應(yīng)用來說都是難以承受的鄙陡。讀者不妨試想一下冕房,要是你的計(jì)算機(jī)每運(yùn)行一個(gè)小時(shí)就會(huì)暫停相應(yīng)5分鐘,你會(huì)有什么樣的心情趁矾?


20F686FA-782E-4E63-AA57-679FC0E76A12.png
  • 優(yōu)點(diǎn)
    簡(jiǎn)單高效(與其他收集器的單線程比)耙册,對(duì)于限定單個(gè)CPU的環(huán)境來說,Serial收集器由于沒有線程交互的開銷毫捣,專心做垃圾收集自然可以獲得最高的單線程收集效率详拙。

ParNew 收集器

ParNew收集器其實(shí)就是Serial收集器的多線程版本。除了使用多條線程進(jìn)行垃圾收集之外培漏,其余行為包括Serial收集器可用的所有控制參數(shù)溪厘、收集算法、Stop The World牌柄、對(duì)象分配規(guī)則畸悬、回收策略等都與Serial收集器完全一致。


C4582BD2-E214-4B19-8E90-22064DD66B94.png

ParNew 收集器除了多線程收集之外珊佣,其他與Serial收集器相比并沒有太多創(chuàng)新之處蹋宦,但它卻是許多運(yùn)行在Server模式下的虛擬機(jī)中首選的新生代收集器,其中有一個(gè)與性能無關(guān)咒锻,但最重要的原因是冷冗,除了Serial收集器外,目前只有它能與CMS收集器配合工作惑艇。ParNew收集器也是使用-XX:+UseConcMarkSweepGC選項(xiàng)后的默認(rèn)新生代收集器蒿辙。

CMS 收集器

CMS(Concurrent Mark Sweep) 收集器是一種以獲取最短回收停頓時(shí)間為目標(biāo)的收集器。目前很大一部分的 java 應(yīng)用幾種在互聯(lián)網(wǎng)站或者B/S系統(tǒng)的服務(wù)端上滨巴,這類應(yīng)用尤其重視服務(wù)的響應(yīng)速度思灌,希望系統(tǒng)停頓時(shí)間最短,以給用戶帶來較好的體驗(yàn)恭取。CMS收集器就非常符合這類應(yīng)用的需求泰偿。
從名字(包含“Mark Sweep”)上就可以看出,CMS收集器是基于“標(biāo)記-清除”算法實(shí)現(xiàn)的蜈垮,它的運(yùn)作過程相對(duì)于前面幾種收集器來說更復(fù)雜一些耗跛,整個(gè)過程分為4個(gè)步驟,包括:

  • 初始標(biāo)記(CMS initial mark)

  • 并發(fā)標(biāo)記 (CMS concurrent mark)

  • 重新標(biāo)記(CMS remark)

  • 并發(fā)清除(CMS concurrent sweep)
    其中攒发,初始標(biāo)記调塌、并發(fā)標(biāo)記這兩個(gè)步驟仍然需要“Stop The World”。初始標(biāo)記僅僅是標(biāo)記一下GC Roots能直接關(guān)聯(lián)到的對(duì)象惠猿,速度很開羔砾,并發(fā)標(biāo)記階段就是進(jìn)行GC Roots Tracing 的過程,而重新標(biāo)記則是為了修正并發(fā)標(biāo)記期間因用戶程序繼續(xù)運(yùn)作而導(dǎo)致標(biāo)記產(chǎn)生變動(dòng)的那一部分對(duì)象的標(biāo)記記錄,這個(gè)階段的暫停時(shí)間一般會(huì)比初始標(biāo)記階段稍長(zhǎng)一些蜒茄,但遠(yuǎn)比并發(fā)標(biāo)記的時(shí)間短。
    由于整個(gè)過程中耗時(shí)最長(zhǎng)的并發(fā)標(biāo)記和并發(fā)清除過程收集器線程都可以和用戶線程一起工作餐屎,因此檀葛,從總體上來說,CMS收集器的內(nèi)存回收過程是與用戶線程一起并發(fā)執(zhí)行的腹缩。


    F69318F5-D55C-4176-80BB-85AA64AA4AF3.png
  • 缺點(diǎn)

  1. CMS收集器對(duì)CPU資源非常敏感
  2. CMS收集器無法處理浮動(dòng)垃圾
  3. CMS是一款基于“標(biāo)記-清除”算法實(shí)現(xiàn)的收集器屿聋,會(huì)產(chǎn)生大量空間碎片〔厝担空間碎片過多時(shí)润讥,將會(huì)給大對(duì)象分配帶來很大麻煩,往往出現(xiàn)老年代還有很大空間剩余盘寡,但是無法找到足夠大的連續(xù)空間來分配當(dāng)前對(duì)象楚殿,不得不提前出發(fā)一次Full GC。為了解決這個(gè)問題竿痰,CMS收集器提供了一個(gè)-XX:+UseCMSCompactAtFullCollection開關(guān)參數(shù)脆粥,用于在CMS收集器頂不住要進(jìn)行FullGC時(shí)開啟內(nèi)存碎片的合并整理過程,內(nèi)存整理的過程是無法并發(fā)的影涉,空間碎片問題沒有了变隔,但停頓時(shí)間不得不變長(zhǎng)。虛擬機(jī)設(shè)計(jì)者還提供了另外一個(gè)參數(shù)-XX:CMSFullGCsBeforeCompaction蟹倾,這個(gè)參數(shù)是用于設(shè)置多少次不壓縮的Full GC后匣缘,跟著來一次帶壓縮的(默認(rèn)值為0,表示每次進(jìn)入Full GC時(shí)都要進(jìn)行碎片整理)鲜棠。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末肌厨,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子岔留,更是在濱河造成了極大的恐慌夏哭,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件献联,死亡現(xiàn)場(chǎng)離奇詭異竖配,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)里逆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門进胯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人原押,你說我怎么就攤上這事胁镐。” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵盯漂,是天一觀的道長(zhǎng)颇玷。 經(jīng)常有香客問我,道長(zhǎng)就缆,這世上最難降的妖魔是什么帖渠? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮竭宰,結(jié)果婚禮上空郊,老公的妹妹穿的比我還像新娘。我一直安慰自己切揭,他們只是感情好狞甚,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著廓旬,像睡著了一般哼审。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上嗤谚,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天棺蛛,我揣著相機(jī)與錄音,去河邊找鬼巩步。 笑死旁赊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的椅野。 我是一名探鬼主播终畅,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼竟闪!你這毒婦竟也來了离福?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤炼蛤,失蹤者是張志新(化名)和其女友劉穎妖爷,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體理朋,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡絮识,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嗽上。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片次舌。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖兽愤,靈堂內(nèi)的尸體忽然破棺而出彼念,到底是詐尸還是另有隱情挪圾,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布逐沙,位于F島的核電站哲思,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏吩案。R本人自食惡果不足惜也殖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望务热。 院中可真熱鬧,春花似錦己儒、人聲如沸崎岂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽冲甘。三九已至,卻和暖如春途样,著一層夾襖步出監(jiān)牢的瞬間江醇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來泰國打工何暇, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留陶夜,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓裆站,卻偏偏與公主長(zhǎng)得像条辟,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子宏胯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

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