垃圾收集器

1. 分類總覽

2. 簡述

1). 新生代收集器

a. Serial:單線程收集器,垃圾清理會導致其他全部線程停頓(Stop The World), 新生代默認收集器(複製算法);

b. ParNew: Serial多線程版本(多CPU環境中效果優於Serial)(複製算法);

c. Parallel Scanvenge:並行多線程收集器,可以自由最大停頓時間吞吐量大小。GC停頓時間可以通過犧牲吞吐量和新生代空間來換取(複製算法);

2). 老年代收集器

a. Series Old: Series老年代版本,單線程(“標記-整理”算法,);

b. Parallel Old: Parallel Scavenge的老年底版本,二者可以搭配使用,多線程(“標記-整理”算法);

c. CMS(Concurrent Mask Sweep):重點在響應速度("標記-清除"算法)

分爲初始標記、併發標記、重新標記、併發清除四個過程。

初始標記會停頓時間很短;重新標記修正併發標記過程中的變動數據,停頓時間比初始標記略長;

併發標記、併發清除時間較長,但是可以併發運行其他工作線程。

缺點:

    對CPU資源敏感

    無法清理浮動垃圾(垃圾清理的時候產生的垃圾無法清除,只能等待下次清除)

    使用標記-清除算法會導致大量的內存碎片

3)“新生”+“老年”

G1收集器

特點:

a. 並行併發

b. 分代收集

c. 空間整理

d. 可預測的停頓

參考《深入理解Java虛擬機》周志明 3.3

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章