因爲Java11中
ZGC
的出現,儘可能不要對GC調優的研究下太多功夫,對將來來講,這是貶值的。
收集器 | 算法 | 收集器類型 | 說明 | 適用場景 |
---|---|---|---|---|
Serial | 複製算法 | 單線程 | 進行垃圾回收時,須暫停全部工做線程,知道回收完成 | 簡單高效,適合內存不大的狀況 |
ParNew | 複製算法 | 多線程並行 | 它是Serial收集器的多線程版本 | 搭配CMS的首選 |
Parallel Scavenge(吞吐量優先收集器) | 複製算法 | 多線程並行 | 相似ParNew,更加關注吞吐量 | 主要適合後臺運算不須要太多交互的任務 |
收集器 | 算法 | 收集器類型 | 說明 | 適用場景 |
---|---|---|---|---|
Serial Old | 標記整理 | 單線程 | JDK7/8默認的 | Client模式下虛擬機適用 |
Parallel Old | 標記整理 | 多線程並行 | Parallel Scavenge的老年代版本 | 在注重吞吐量場景下使用 |
CMS | 標記清除 | 並行、併發 | 儘量縮短GC時用戶線程中止的時間,缺點:一、容易有內存碎片 二、須要更多的cpu資源 三、產生浮動垃圾,須要更大的堆空間 | 重視服務的相應速度 |
G1 | 跨代、標記整理 | 並行、併發 | JDK7正式引入,採用分區回收的思惟,基本不犧牲吞吐量的前提下,低停頓內存回收,可預測的停頓是其最大的優點 | 面向服務端應用的垃圾回收器,目標是取代CMS |