jvm垃圾收集器

串行與并行收集器

串行回收: JDK1.5前的默認(rèn)算法 缺點(diǎn)是只有一個(gè)線程焚鲜,執(zhí)行垃圾回收時(shí)程序停止的時(shí)間比較長恤磷。
并行回收: 多個(gè)線程執(zhí)行垃圾回收適合于吞吐量的系統(tǒng)绘雁,回收時(shí)系統(tǒng)會(huì)停止運(yùn)行牧愁。

serial收集器

串行收集器是最古老,最穩(wěn)定以及效率高的收集器红淡,可能會(huì)產(chǎn)生較長的停頓不狮,只使用一個(gè)線程去回收。新生代在旱、老年代使用串行回收摇零;新生代復(fù)制算法、老年代標(biāo)記-壓縮桶蝎;垃圾收集的過程中會(huì)Stop The World(服務(wù)暫停)一個(gè)單線程的收集器驻仅,在進(jìn)行垃圾收集時(shí)候,必須暫停其他所有的工作線程直到它收集結(jié)束登渣。
特點(diǎn):CPU利用率最高噪服,停頓時(shí)間即用戶等待時(shí)間比較長。
適用場(chǎng)景:小型應(yīng)用
通過JVM參數(shù)-XX:+UseSerialGC可以使用串行垃圾回收器胜茧。

ParNew收集器

ParNew收集器其實(shí)就是Serial收集器的多線程版本粘优。新生代并行,老年代串行呻顽;新生代復(fù)制算法敬飒、老年代標(biāo)記-壓縮
參數(shù)控制:-XX:+UseParNewGC ParNew收集器
-XX:ParallelGCThreads 限制線程數(shù)量

parallel 收集器

Parallel Scavenge收集器類似ParNew收集器,Parallel收集器更關(guān)注系統(tǒng)的吞吐量芬位。可以通過參數(shù)來打開自適應(yīng)調(diào)節(jié)策略带到,虛擬機(jī)會(huì)根據(jù)當(dāng)前系統(tǒng)的運(yùn)行情況收集性能監(jiān)控信息昧碉,動(dòng)態(tài)調(diào)整這些參數(shù)以提供最合適的停頓時(shí)間或最大的吞吐量;也可以通過參數(shù)控制GC的時(shí)間不大于多少毫秒或者比例揽惹;新生代復(fù)制算法被饿、老年代標(biāo)記-壓縮
采用多線程來通過掃描并壓縮堆
特點(diǎn):停頓時(shí)間短,回收效率高搪搏,對(duì)吞吐量要求高狭握。
適用場(chǎng)景:大型應(yīng)用,科學(xué)計(jì)算疯溺,大規(guī)模數(shù)據(jù)采集等论颅。
通過JVM參數(shù) XX:+USeParNewGC 打開并發(fā)標(biāo)記掃描垃圾回收器。

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)今妄。
從名字(包含“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)記犬性、重新標(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)記階段稍長一些,但遠(yuǎn)比并發(fā)標(biāo)記的時(shí)間短吹艇。
由于整個(gè)過程中耗時(shí)最長的并發(fā)標(biāo)記和并發(fā)清除過程中惰蜜,收集器線程都可以與用戶線程一起工作,所以總體上來說受神,CMS收集器的內(nèi)存回收過程是與用戶線程一起并發(fā)地執(zhí)行抛猖。老年代收集器(新生代使用ParNew)
優(yōu)點(diǎn):并發(fā)收集、低停頓
缺點(diǎn):產(chǎn)生大量空間碎片鼻听、并發(fā)階段會(huì)降低吞吐量
采用“標(biāo)記-清除”算法實(shí)現(xiàn)财著,使用多線程的算法去掃描堆,對(duì)發(fā)現(xiàn)未使用的對(duì)象進(jìn)行回收撑碴。
(1)初始標(biāo)記
(2)并發(fā)標(biāo)記
(3)并發(fā)預(yù)處理
(4)重新標(biāo)記
(5)并發(fā)清除
(6)并發(fā)重置
特點(diǎn):響應(yīng)時(shí)間優(yōu)先撑教,減少垃圾收集停頓時(shí)間
適應(yīng)場(chǎng)景:大型服務(wù)器等。
通過JVM參數(shù) -XX:+UseConcMarkSweepGC設(shè)置

g1收集器

在G1中醉拓,堆被劃分成 許多個(gè)連續(xù)的區(qū)域(region)伟姐。采用G1算法進(jìn)行回收,吸收了CMS收集器特點(diǎn)亿卤。
特點(diǎn):支持很大的堆愤兵,高吞吐量 --支持多CPU和垃圾回收線程
--在主線程暫停的情況下,使用并行收集
--在主線程運(yùn)行的情況下排吴,使用并發(fā)收集
實(shí)時(shí)目標(biāo):可配置在N毫秒內(nèi)最多只占用M毫秒的時(shí)間進(jìn)行垃圾回收
通過JVM參數(shù) -XX:+UseG1GC 使用G1垃圾回收器
注意: 并發(fā)是指一個(gè)處理器同時(shí)處理多個(gè)任務(wù)秆乳。
并行是指多個(gè)處理器或者是多核的處理器同時(shí)處理多個(gè)不同的任務(wù)。
并發(fā)是邏輯上的同時(shí)發(fā)生(simultaneous)钻哩,而并行是物理上的同時(shí)發(fā)生屹堰。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市憋槐,隨后出現(xiàn)的幾起案子双藕,更是在濱河造成了極大的恐慌,老刑警劉巖阳仔,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件忧陪,死亡現(xiàn)場(chǎng)離奇詭異扣泊,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)嘶摊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門延蟹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人叶堆,你說我怎么就攤上這事阱飘。” “怎么了虱颗?”我有些...
    開封第一講書人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵沥匈,是天一觀的道長。 經(jīng)常有香客問我忘渔,道長高帖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上融蹂,老公的妹妹穿的比我還像新娘。我一直安慰自己掀泳,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般吏祸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上钩蚊,一...
    開封第一講書人閱讀 51,698評(píng)論 1 305
  • 那天犁罩,我揣著相機(jī)與錄音,去河邊找鬼两疚。 笑死,一個(gè)胖子當(dāng)著我的面吹牛含滴,可吹牛的內(nèi)容都是我干的诱渤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼谈况,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼勺美!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起碑韵,我...
    開封第一講書人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤赡茸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后祝闻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體占卧,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了华蜒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辙纬。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖叭喜,靈堂內(nèi)的尸體忽然破棺而出贺拣,到底是詐尸還是另有隱情,我是刑警寧澤捂蕴,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布譬涡,位于F島的核電站,受9級(jí)特大地震影響啥辨,放射性物質(zhì)發(fā)生泄漏涡匀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一委可、第九天 我趴在偏房一處隱蔽的房頂上張望渊跋。 院中可真熱鬧,春花似錦着倾、人聲如沸拾酝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蒿囤。三九已至,卻和暖如春崇决,著一層夾襖步出監(jiān)牢的瞬間材诽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來泰國打工恒傻, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留脸侥,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓盈厘,卻偏偏與公主長得像睁枕,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子沸手,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

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

  • 如果說收集算法是內(nèi)存回收的方法論外遇,那么垃圾收集器就是內(nèi)存回收的具體實(shí)現(xiàn)。 Java虛擬機(jī)規(guī)范中對(duì)垃圾收集器應(yīng)該如何...
    Rick617閱讀 423評(píng)論 0 0
  • 一契吉、垃圾收集器概述 垃圾收集器是垃圾回收算法(標(biāo)記-清除算法跳仿、復(fù)制算法、標(biāo)記-整理算法捐晶、火車算法)的具體實(shí)現(xiàn)菲语,不同...
    林亞希閱讀 285評(píng)論 0 0
  • HotSpot JVM收集器 上面有7中收集器妄辩,分為兩塊,上面為新生代收集器谨究,下面是老年代收集器恩袱。如果兩個(gè)收集器之...
    朽染閱讀 238評(píng)論 0 1
  • Garbage Collector(GC)自動(dòng)管理應(yīng)用程序的動(dòng)態(tài)內(nèi)存分配請(qǐng)求 垃圾收集器通過以下操作執(zhí)行自動(dòng)動(dòng)態(tài)內(nèi)...
    wangdy12閱讀 577評(píng)論 0 0
  • 早上7點(diǎn)從珠海拱北口岸過關(guān)鸯屿,去澳門排隊(duì)的人還不是很多澈吨,跟著一群人在閘口開始進(jìn)行安檢,照相寄摆,錄指紋谅辣,浩浩蕩蕩走了一段...
    不做沉默的大多數(shù)閱讀 867評(píng)論 3 5