Serial收集器
單線程收集器。新生代、老年代使用串行回收;新生代復(fù)制算法、老年代標(biāo)記-整理;垃圾收集的過程中會Stop The World(服務(wù)暫停)。

ParNew收集器
ParNew收集器其實(shí)就是Serial收集器的多線程版本。新生代并行,老年代串行;新生代復(fù)制算法、老年代標(biāo)記-整理。

CMS收集器
整個過程分為4個步驟,包括:
初始標(biāo)記(CMS initial mark)
并發(fā)標(biāo)記(CMS concurrent mark)
重新標(biāo)記(CMS remark)
并發(fā)清除(CMS concurrent sweep)
其中初始標(biāo)記、重新標(biāo)記這兩個步驟仍然需要“Stop The World”。初始標(biāo)記僅僅只是標(biāo)記一下GC Roots能直接關(guān)聯(lián)到的對象,速度很快,并發(fā)標(biāo)記階段就是進(jìn)行GC Roots Tracing的過程,而重新標(biāo)記階段則是為了修正并發(fā)標(biāo)記期間,因用戶程序繼續(xù)運(yùn)作而導(dǎo)致標(biāo)記產(chǎn)生變動的那一部分對象的標(biāo)記記錄,這個階段的停頓時間一般會比初始標(biāo)記階段稍長一些,但遠(yuǎn)比并發(fā)標(biāo)記的時間短。
由于整個過程中耗時最長的并發(fā)標(biāo)記和并發(fā)清除過程中,收集器線程都可以與用戶線程一起工作,所以總體上來說,CMS收集器的內(nèi)存回收過程是與用戶線程一起并發(fā)地執(zhí)行。一般作為老年代收集器。

缺點(diǎn):
有新的垃圾產(chǎn)生,這些垃圾出現(xiàn)在標(biāo)記過程之后,CMS無法在本次收集中處理掉它們,只好等待下一次GC時再將其清理掉,這些垃圾就稱為浮動垃圾。
CMS收集器是基于標(biāo)記-清除算法,因此不可避免會產(chǎn)生大量不連續(xù)的內(nèi)存碎片,如果無法找到一塊足夠大的連續(xù)內(nèi)存存放對象時,將會因此觸發(fā)Full GC。