1. 程式人生 > >Java虛擬機器的垃圾收集器有哪些?

Java虛擬機器的垃圾收集器有哪些?

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收集器可以用於新生代和老年代,具備使用者執行緒和回收執行緒的並行與併發等特性。
這裡寫圖片描述