HotSpot虛擬機(jī)垃圾收集器

上圖展示了7種作用于不同分代的收集器,如果兩個(gè)收集器之間存在連線,就說(shuō)明它們可以搭配使用。虛擬機(jī)所處的區(qū)域,則表示它是屬于新生代收集器還是老年代收集器。
Serial收集器
線程模式:?jiǎn)尉€程
特性:簡(jiǎn)單高效
收集算法:復(fù)制算法
適用場(chǎng)景:虛擬機(jī)運(yùn)行在Client模式
運(yùn)行示意圖:

ParNew收集器
線程模式:多線程
特性:簡(jiǎn)單、高效、并發(fā)
收集算法:復(fù)制算法
適用場(chǎng)景:虛擬機(jī)運(yùn)行在多CPU的Server模式(唯一能夠與CMS收集器配合使用的新生代并發(fā)收集器)
運(yùn)行示意圖:

Parallel Scavenge收集器
線程模式:多線程
特性:可控吞吐量
收集算法:復(fù)制算法
適用場(chǎng)景:后臺(tái)運(yùn)算但不需要太多交互的任務(wù)
運(yùn)行示意圖:

Serial Old收集器
線程模式:?jiǎn)尉€程
特性:簡(jiǎn)單、高效
收集算法:標(biāo)記-整理算法
適用場(chǎng)景:Client模式下的虛擬機(jī)使用;Server模式下,其一,用于jdk1.5以前版本中與Parallel Scavenge收集器搭配使用;其二,作為CMS收集器的后備預(yù)案,在并發(fā)收集反生Concurrent Mode Failure時(shí)使用。
運(yùn)行示意圖:

Parallel Old 收集器
線程模式:多線程
特性:
收集算法:標(biāo)記-整理算法
適用場(chǎng)景:可以配合Parallel Scavenge收集器使用,在注重吞吐量以及CPU資源敏感的場(chǎng)合,可以優(yōu)先考慮Parallel Scavenge 與Parallel Old收集器
運(yùn)行示意圖:

CMS(Concurrent Mark Sweep)收集器
線程模式:多線程
特性:并發(fā)收集、低停頓
收集算法:標(biāo)記-清除算法
適用場(chǎng)景:重視服務(wù)的響應(yīng)速度,希望系統(tǒng)停頓時(shí)間最短。
運(yùn)行示意圖:

G1(Garbage-First)收集器
線程模式:多線程
特性:并行與并發(fā),分代收集,空間整合,可預(yù)測(cè)的停頓
收集算法:標(biāo)記-清除算法
適用場(chǎng)景:重視服務(wù)的響應(yīng)速度,希望系統(tǒng)停頓時(shí)間最短。
運(yùn)行示意圖:

相關(guān)概念
并行:指多條垃圾收集線程并行工作,但此時(shí)用戶線程仍然處于等待狀態(tài)。
并發(fā):指用戶線程與垃圾收集線程同時(shí)執(zhí)行(但不一定是并行的,可能會(huì)交替執(zhí)行),用戶程序在 繼續(xù)運(yùn)行,而垃圾收集程序運(yùn)行于另一個(gè)CPU上
吞吐量:CPU用于運(yùn)行用戶代碼的時(shí)間與CPU總消耗時(shí)間的比值,即吞吐量=運(yùn)行用戶代碼時(shí)間/ (運(yùn)行用戶代碼時(shí)間+垃圾收集時(shí)間),高吞吐量可以高效率的利用CPU時(shí)間,盡快完成程序的運(yùn)算任務(wù)