1、垃圾收集器概述
垃圾收集器是垃圾回收演算法(標記-清除演算法、複製演算法、標記-整理演算法、火車演算法)的具體實現,不同商家、不同版本的JVM所提供的垃圾收集器可能會有很在差別,本文主要介紹HotSpot虛擬機器中的垃圾收集器。
1-1、垃圾收集器組合
JDK7/8後,HotSpot虛擬機器所有收集器及組合(連線),如下圖:
(A)、圖中展示了7種不同分代的收集器:
Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old、CMS、G1;
(B)、而它們所處區域,則表明其是屬於新生代收集器還是老年代收集器:
新生代收集器:Serial、ParNew、Parallel Scavenge;
老年代收集器:Serial Old、Parallel Old、CMS;
整堆收集器:G1;
(C)、兩個收集器間有連線,表明它們可以搭配使用:
Serial/Serial Old、Serial/CMS、ParNew/Serial Old、ParNew/CMS、Parallel Scavenge/Serial Old、Parallel Scavenge/Parallel Old、G1;
(D)、其中Serial Old作為CMS出現"Concurrent Mode Failure"失敗的後備預案(後面介紹);
1-2、併發垃圾收集和並行垃圾收集的區別
(A)、並行(Parallel)
指多條垃圾收集執行緒並行工作,但此時使用者執行緒仍然處於等待狀態;
如ParNew、Parallel Scavenge、Parallel Old;
(B)、併發(Concurrent)
指使用者執行緒與垃圾收集執行緒同時執行(但不一定是並行的,可能會交替執行);
使用者程式在繼續執行,而垃圾收集程式執行緒運行於另一個CPU上;
如CMS、G1(也有並行);
1-3、Minor GC和Full GC的區別
(A)、Minor GC
又稱新生代GC,指發生在新生代的垃圾收集動作;
因為Java物件大多是朝生夕滅,所以Minor GC非常頻繁,一般回收速度也比較快;
(B)、Full GC
又稱Major GC或老年代GC,指發生在老年代的GC;
出現Full GC經常會伴隨至少一次的Minor GC(不是絕對,Parallel Sacvenge收集器就可以選擇設定Major GC策略);
Major GC速度一般比Minor GC慢10倍以上;
1、垃圾收集器概述
垃圾收集器是垃圾回收演算法(標記-清除演算法、複製演算法、標記-整理演算法、火車演算法)的具體實現,不同商家、不同版本的JVM所提供的垃圾收集器可能會有很在差別,本文主要介紹HotSpot虛擬機器中的垃圾收集器。
1-1、垃圾收集器組合
JDK7/8後,HotSpot虛擬機器所有收集器及組合(連線),如下圖:
(A)、圖中展示了7種不同分代的收集器:
Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old、CMS、G1;
(B)、而它們所處區域,則表明其是屬於新生代收集器還是老年代收集器:
新生代收集器:Serial、ParNew、Parallel Scavenge;
老年代收集器:Serial Old、Parallel Old、CMS;
整堆收集器:G1;
(C)、兩個收集器間有連線,表明它們可以搭配使用:
Serial/Serial Old、Serial/CMS、ParNew/Serial Old、ParNew/CMS、Parallel Scavenge/Serial Old、Parallel Scavenge/Parallel Old、G1;
(D)、其中Serial Old作為CMS出現"Concurrent Mode Failure"失敗的後備預案(後面介紹);
1-2、併發垃圾收集和並行垃圾收集的區別
(A)、並行(Parallel)
指多條垃圾收集執行緒並行工作,但此時使用者執行緒仍然處於等待狀態;
如ParNew、Parallel Scavenge、Parallel Old;
(B)、併發(Concurrent)
指使用者執行緒與垃圾收集執行緒同時執行(但不一定是並行的,可能會交替執行);
使用者程式在繼續執行,而垃圾收集程式執行緒運行於另一個CPU上;
如CMS、G1(也有並行);
1-3、Minor GC和Full GC的區別
(A)、Minor GC
又稱新生代GC,指發生在新生代的垃圾收集動作;
因為Java物件大多是朝生夕滅,所以Minor GC非常頻繁,一般回收速度也比較快;
(B)、Full GC
又稱Major GC或老年代GC,指發生在老年代的GC;
出現Full GC經常會伴隨至少一次的Minor GC(不是絕對,Parallel Sacvenge收集器就可以選擇設定Major GC策略);
Major GC速度一般比Minor GC慢10倍以上;