Java虛擬機器的垃圾收集器有哪些?
阿新 • • 發佈:2019-01-09
Serial收集器
Serial收集器是新生代的垃圾收集器,是一個單執行緒的收集器,它開始工作時會暫停掉其它所有的工作執行緒,一直到它工作結束。它是虛擬機器執行在Client模式下的預設新生代垃圾收集器,採用複製演算法。
ParNew收集器
ParNew收集器是新生代的垃圾收集器,採用多執行緒進行垃圾收集和回收,採用複製演算法的收集器,它是Serial收集器的多執行緒版本,它的實現複用了很多Serial收集器的程式碼,所以它包含了很多Serial收集器的引數和特性,它能與CMS收集器配合工作。它開始工作的時候會暫停所有使用者執行緒。
Parallel Scavenge收集器
Parallel Scavenge收集器是一個新生代收集器,採用複製演算法,多條垃圾收集執行緒並行工作。它與ParNew收集器的區別是它可以通過引數控制吞吐量,因此也被成為吞吐量優先收集器。
Serial Old收集器
Serial Old收集器是一個老年代收集器,它也是一個單執行緒收集器,使用標記-整理演算法。虛擬機器執行在Client模式下,Serial Old收集器用於收集和回收老年代。
Parallel Old收集器
Parallel Old收集器是一個老年代收集器,它使用多執行緒進行垃圾收集和回收,使用標記-整理演算法。和Parallel Scavenge收集器一樣,它也注重吞吐量優先。
CMS收集器
CMS收集器是一個老年代收集器,採用標記-清除演算法,注重獲取最短回收停頓時間,是比較常用的垃圾收集器。它的工作過程包含4個步驟:初始標記、併發標記、重新標記和併發清除,其中初始標記和重新標記需要暫停所有的使用者執行緒。因為它採用標記-清除演算法,所以會產生空間碎片。
G1收集器
G1收集器可以用於新生代和老年代,具備使用者執行緒和回收執行緒的並行與併發等特性。