本文是根據《深入理解Java虛擬機》自己整理的筆記,僅供個人學習。
如果說收集算法是內存回收的方法論,那麼垃圾收集器就是內存回收的具體實現。
1 serial 收集器
單線程的收集器,進行垃圾收集時,暫停其他所有工作線程直到收集結束。
優點:沒有線程交互的開銷 缺點:stop the world
2 ParNew 收集器
serial收集器的多線程版本,多條線程進行垃圾回收。
3 Parallel Scavenge 收集器
Parallel Scavenge 收集器的目的是儘可能達到一個高的吞吐量。即 CPU用於運行用戶代碼的時間 | CPU總消耗時間的比值。
4 Serial Old 收集器
單線程收集器,使用標記-整理算法。
如上圖3-6.
5 Parallel Old收集器
使用多線程和標記-整理算法。
6 CMS收集器
CMS是一種以獲得最短回收停頓時間爲目標的收集器。收集過程分爲4個步驟:
(1)初始標記
(2)併發標記
(3)重新標記
(3)併發清除
優點:併發收集 低停頓
7 G1收集器
G1收集器的運作大概分爲以下幾個步驟:
(1) 初始標記
(2) 併發標記
(3)最終標記
(4)篩選回收