1.Serial收集器
一個單線程的收集器,在進行垃圾收集時候,必須暫停其他所有的工作線程直到它收集結束。
特點:CPU利用率最高,停頓時間即用戶等待時間比較長。
適用場景:小型應用
通過JVM參數-XX:+UseSerialGC可以使用串行垃圾回收器。
2.Parallel收集器
采用多線程來通過掃描並壓縮堆
特點:停頓時間短,回收效率高,對吞吐量要求高。
適用場景:大型應用,科學計算,大規模數據采集等。
通過JVM參數 XX:+USeParNewGC 打開並發標記掃描垃圾回收器。
3.CMS收集器
采用“標記-清除”算法實現,使用多線程的算法去掃描堆,對發現未使用的對象進行回收。
(1)初始標記
(2)並發標記
(3)並發預處理
(4)重新標記
(5)並發清除
(6)並發重置
特點:響應時間優先,減少垃圾收集停頓時間
適應場景:服務器、電信領域等。
通過JVM參數 -XX:+UseConcMarkSweepGC設置
4.G1收集器
在G1中,堆被划分成 許多個連續的區域(region)。采用G1算法進行回收,吸收了CMS收集器特點。
特點:支持很大的堆,高吞吐量
--支持多CPU和垃圾回收線程
--在主線程暫停的情況下,使用並行收集
--在主線程運行的情況下,使用並發收集
實時目標:可配置在N毫秒內最多只占用M毫秒的時間進行垃圾回收
通過JVM參數 –XX:+UseG1GC 使用G1垃圾回收器
