Serial收集器
優(yōu)點(diǎn):簡(jiǎn)單而高效(與其他收集器的單線程相比)。Serial收集器由于沒有線程交互的開銷,自然可以獲得很高的單線程收集效率。
缺點(diǎn):Stop The World
新生代采用復(fù)制算法,老年代采用標(biāo)記-整理算法锋边。
ParNew收集器:
ParNew收集器其實(shí)就是Serial收集器的多線程版本,除了使用多線程進(jìn)行垃圾收集外编曼,其余行為(控制參數(shù)豆巨、收集算法、回收策略等等)和Serial收集器完全一樣掐场。
新生代采用復(fù)制算法往扔,老年代采用標(biāo)記-整理算法
Parallel Scavenge收集器:
Parallel Scavenge 收集器類似于ParNew 收集器,是Server?模式(內(nèi)存大于2G熊户,2個(gè)cpu)下的默認(rèn)收集器
特點(diǎn):
Parallel Scavenge收集器關(guān)注點(diǎn)是吞吐量(高效率的利用CPU)萍膛。
所謂吞吐量就是CPU中用于運(yùn)行用戶代碼的時(shí)間與CPU總消耗時(shí)間的比值
CMS等垃圾收集器的關(guān)注點(diǎn)更多的是用戶線程的停頓時(shí)間(提高用戶體驗(yàn))。
Serial Old收集器:
Serial收集器的老年代版本
Parallel Old收集器:
Parallel Scavenge收集器的老年代版本嚷堡。
CMS收集器(-XX:+UseConcMarkSweepGC(主要是old區(qū)使用)):
CMS(Concurrent Mark Sweep——標(biāo)記-清除)收集器是一種以獲取最短回收停頓時(shí)間為目標(biāo)的收集器卦羡。
它而非常符合在注重用戶體驗(yàn)的應(yīng)用上使用,它是HotSpot虛擬機(jī)第一款真正意義上的并發(fā)收集器,它第一次實(shí)現(xiàn)了讓垃圾收集線程與用戶線程(基本上)同時(shí)工作
過程:
優(yōu)點(diǎn):
并發(fā)收集绿饵、低停頓
缺點(diǎn):
1.對(duì)CPU資源敏感(會(huì)和服務(wù)搶資源)
2.無法處理浮動(dòng)垃圾(在java業(yè)務(wù)程序線程與垃圾收集線程并發(fā)執(zhí)行過程中又產(chǎn)生的垃圾,這種浮動(dòng)垃圾只能等到下一次gc再清理了)瓶颠;
3.它使用的回收算法-“標(biāo)記-清除”算法會(huì)導(dǎo)致收集結(jié)束時(shí)會(huì)有大量空間碎片產(chǎn)生
G1收集器(-XX:+UseG1GC):
G1 (Garbage-First)是一款面向服務(wù)器的垃圾收集器,主要針對(duì)配備多顆處理器及大容量?jī)?nèi)存的機(jī)器. 以極高概率滿足GC停頓時(shí)間要求的同時(shí),還具備高吞吐量性能特征.
G1將Java堆劃分為多個(gè)大小相等的獨(dú)立區(qū)域(Region)拟赊,雖保留新生代和老年代的概念,但不再是物理隔閡了粹淋,它們都是(可以不連續(xù))Region的集合吸祟。
特點(diǎn):
并行與并發(fā):
G1能充分利用CPU借杰、多核環(huán)境下的硬件優(yōu)勢(shì)过吻,使用多個(gè)CPU(CPU或者CPU核心)來縮短Stop-The-World停頓時(shí)間。部分其他收集器原本需要停頓Java線程來執(zhí)行GC動(dòng)作蔗衡,G1收集器仍然可以通過并發(fā)的方式讓java程序繼續(xù)執(zhí)行纤虽。
分代收集:
雖然G1可以不需要其他收集器配合就能獨(dú)立管理整個(gè)GC堆,但是還是保留了分代的概念
空間整合:
與CMS的“標(biāo)記--清理”算法不同绞惦,G1從整體來看是基于“標(biāo)記整理”算法實(shí)現(xiàn)的收集器逼纸;從局部上來看是基于“復(fù)制”算法實(shí)現(xiàn)的。
可預(yù)測(cè)停頓:
G1收集器的運(yùn)作大致分為以下幾個(gè)步驟:
初始標(biāo)記(initial mark济蝉,STW):
在此階段杰刽,G1 GC 對(duì)根進(jìn)行標(biāo)記。該階段與常規(guī)的 (STW)年輕代垃圾回收密切相關(guān)
并發(fā)標(biāo)記(Concurrent Marking):
G1 GC 在整個(gè)堆中查找可訪問的(存活的)對(duì)象
最終標(biāo)記(Remark王滤,STW):
該階段是 STW 回收贺嫂,幫助完成標(biāo)記周期
篩選回收(Cleanup,STW):
篩選回收階段首先對(duì)各個(gè)Region的回收價(jià)值和成本進(jìn)行排序淑仆,根據(jù)用戶所期望的GC停頓時(shí)間來制定回收計(jì)劃涝婉,這個(gè)階段其實(shí)也可以做到與用戶程序一起并發(fā)執(zhí)行,但是因?yàn)橹换厥找徊糠諶egion蔗怠,時(shí)間是用戶可控制的墩弯,而且停頓用戶線程將大幅提高收集效率
G1垃圾收集分類:
YoungGC:
1.新對(duì)象進(jìn)入Eden區(qū)
2.存活對(duì)象拷貝到Survivor區(qū)
3.存活時(shí)間達(dá)到年齡閾值時(shí),對(duì)象晉升到Old區(qū)
MixedGC:
1.不是FullGC寞射,回收所有的Young和部分Old(根據(jù)期望的GC停頓時(shí)間確定old區(qū)垃圾收集的優(yōu)先順序)
2.global?concurrent?marking (全局并發(fā)標(biāo)記)
? ? 2.1.Initial marking phase:標(biāo)記GC Root渔工,STW
? ? 2.2?Root?region?scanning?phase:標(biāo)記存活Region
????2.3.Concurrent?marking?phase:標(biāo)記存活的對(duì)象
? ? 2.4?Remark phase :重新標(biāo)記,STW
? ? 2.5.Cleanup phase:部分STW