回覆列表
  • 1 # TI9加油

    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倍以上;

  • 中秋節和大豐收的關聯?
  • 喝醉了酒那麼難受!為什麼還是有那麼多人樂此不疲?