天天看點

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

垃圾回收器

  • 一. GC分類與性能名額
    • 垃圾回收器分類
      • 按照線程數分
      • 按照工作模式分
      • 按照碎片處理方式或工作的記憶體區間分
    • 評估GC的性能名額
      • 吞吐量(throughput)
      • 暫停時間(pause time)
  • 二.不同的垃圾回收器概述
    • 垃圾收集器發展史
    • 七款經典的垃圾回收器
    • 七款經典收集器與垃圾分代之間的關系
    • 垃圾回收器的組合關系
    • 不同的垃圾回收器概述
    • 如何檢視預設的垃圾收集器
  • 三.Serial回收器: 串行回收
  • 四.ParNew回收器 : 并行回收
  • 五.Parallel回收器: 吞吐量優先
  • 六.CMS回收器: 低延遲
    • CMS工作原理
    • CMS 收集器可以設定的參數
    • JDK後續版本中CMS的變化
  • 七. G1 回收器: 區域化分代式
    • G1回收器的特點(優勢)
    • G1回收器的缺點
    • G1回收器的參數設定
    • G1回收器常見操作步驟
    • G1回收器的适用場景
    • 分區Region: 化整為零
    • G1回收器垃圾回收過程
    • G1回收器垃圾回收過程: Remembered Set
    • G1回收過程一: 年輕代GC
    • G1回收過程二 : 并發标記過程
    • G1回收過程三: 混合回收
    • G1回收可選的過程四: Full GC
    • G1回收過程 : 補充
    • G1 回收器優化建議
  • 八. 垃圾回收器總結
    • 7種經典垃圾回收器總結
    • 怎麼選擇垃圾回收器
    • 面試
  • 九. GC日志分析
    • Minor GC 日志
    • Full GC 日志
    • 舉例
      • 在JDK7中運作
      • 在JDK8中運作
    • GC日志分析工具
      • GC Viewer
      • GC Easy
  • 十. 垃圾回收器的新發展
    • JDK11 新特性
    • Open JDK12的Shenandoah GC
    • ZGC -- JDK14新特性
    • 其他的垃圾回收器 -- AliGC

一. GC分類與性能名額

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

垃圾回收器分類

按照線程數分

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

按照工作模式分

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

按照碎片處理方式或工作的記憶體區間分

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

評估GC的性能名額

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

吞吐量(throughput)

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

暫停時間(pause time)

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

二.不同的垃圾回收器概述

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

垃圾收集器發展史

GC 可以是兩個名詞的縮寫

Garbage Collection 垃圾回收

Garbage Collector 垃圾回收器

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

七款經典的垃圾回收器

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

七款經典收集器與垃圾分代之間的關系

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

垃圾回收器的組合關系

在JDK8 中預設是Parallel Scavenge GC + Parallel Old GC的組合

為啥Parallel Scavenge GC 和 ParNew GC 都是并行的垃圾回收器但是.Parallel Scavenge GC 卻不能和CMS GC組合呢 ?

因為Parallel Scavenge GC 底層用的GC架構和其他的垃圾回收器不要用,是以不能進行相容

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

不同的垃圾回收器概述

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

如何檢視預設的垃圾收集器

-XX:+PrintCommandLineFlags
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

任意執行一個程式

-XX:InitialHeapSize=264819328 -XX:MaxHeapSize=4237109248 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC

可以看出使用的是Parallel Scavenge GC

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

上面的是JDK8 的, 下面是切換到JDK9之後執行的結果

使用的就變成G1了

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

三.Serial回收器: 串行回收

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
-XX:InitialHeapSize=264819328 -XX:MaxHeapSize=4237109248 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC
/**
 * -XX:+PrintCommandLineFlags 
 * -XX:+PrintCommandLineFlags -XX:+UseSerialGC  指定使用的GC
 */
public class GCUseTest {

    public static void main(String[] args) throws InterruptedException {

        ArrayList<byte[]> list = new ArrayList<>();

        while (true) {
            byte[] arr = new byte[100];
            list.add(arr);
            Thread.sleep(10);
        }
    }
}
           
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

四.ParNew回收器 : 并行回收

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
使用parNew和CMSGC, 在JDK9中會報錯
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

五.Parallel回收器: 吞吐量優先

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
檢視使用的GC
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
使用MaxGCPauseMills時會動态調節堆記憶體的大小, 如果堆記憶體變小了,可能會導緻GC的次數變多,GC次數變多了之後,可能會導緻吞吐量下降,影響整體性能
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
這個參數是預設開啟狀态的,這就是為什麼我們在實際檢視新生代和老年代的比例時不是8:1的原因
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

六.CMS回收器: 低延遲

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

CMS工作原理

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

CMS 收集器可以設定的參數

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

JDK後續版本中CMS的變化

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

七. G1 回收器: 區域化分代式

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

G1回收器的特點(優勢)

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

G1回收器的缺點

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

G1回收器的參數設定

在使用MaxGCPauseMillis設定期望最大GC停頓時常的時候,如果設定的市場過于短了的話,可能會存在回收的速度比不上占用region的速度,導緻記憶體占用率越來越高,并最終發生了Full GC ,得不償失.反而導緻性能下降了

GC時間在200-300ms差不多都是正常的時間段

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

G1回收器常見操作步驟

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

G1回收器的适用場景

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

分區Region: 化整為零

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

G1回收器垃圾回收過程

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

G1回收器垃圾回收過程: Remembered Set

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

G1回收過程一: 年輕代GC

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

G1回收過程二 : 并發标記過程

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

G1回收過程三: 混合回收

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

G1回收可選的過程四: Full GC

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

G1回收過程 : 補充

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

G1 回收器優化建議

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

八. 垃圾回收器總結

7種經典垃圾回收器總結

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

怎麼選擇垃圾回收器

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

面試

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

九. GC日志分析

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
Allocation Failure 配置設定失敗
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
比如使用./logs/gc.log ,的話,需要在過程的根目錄下建一個logs目錄,然後每次執行的時候就會生成新的日志檔案
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

Minor GC 日志

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

Full GC 日志

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
perm -> 永久代或者原空間
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

舉例

/**
 * 在jdk7 和 jdk8中分别執行
 *             設定堆記憶體大小    新生代大小                    新生代比例, 伊甸園區8份  使用串行垃圾回收器
 * -verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8 -XX:+UseSerialGC
 */
public class GCLogTest1 {
    private static final int _1MB = 1024 * 1024;

    public static void testAllocation() {
        byte[] allocation1, allocation2, allocation3, allocation4;
        allocation1 = new byte[2 * _1MB];
        allocation2 = new byte[2 * _1MB];
        allocation3 = new byte[2 * _1MB];
        allocation4 = new byte[4 * _1MB];
    }

    public static void main(String[] args) {
        testAllocation();
    }

}
           

在JDK7中運作

由圖可以看出來, 在配置設定記憶體的過程中,首先是把前面三個2MB的對象放入伊甸園區之後, 當需要進行存放第四個4MB的對象的時候,會發現新生代已經沒有辦法進行存放了,這個時候就觸發了一次GC, 将原本的3個2M的對象都放到了老年代之中, 這個時候就可以将新的4M的對象放到伊甸園區中了,檢視列印的GC日志可以檢視.
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
可以看出新生代使用了4M的空間,而老年代則使用了6M的大小
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

在JDK8中運作

在JDK8中大對象直接放入了老年代中
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

GC日志分析工具

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

GC Viewer

下載下傳位址

直接打開jar檔案即可使用

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

GC Easy

線上位址 : GC Easy
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

十. 垃圾回收器的新發展

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

JDK11 新特性

參考網址 : JEP318

318 -> 無操作的垃圾回收器,隻進行配置設定記憶體的操作,不進行垃圾的回收(配置設定完記憶體就退出了)

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

Open JDK12的Shenandoah GC

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

ZGC – JDK14新特性

線上文檔
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

左邊: 低延遲優先的情況下的吞吐量

右邊: 低延遲不保證優先的情況下的吞吐量

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
無論是平均停頓時間還是95% 或者最大的停頓時間,ZGC都可以保證停頓時間在10ms以内
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展

其他的垃圾回收器 – AliGC

JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展
JVM學習筆記(14) 垃圾回收-垃圾回收器一. GC分類與性能名額二.不同的垃圾回收器概述三.Serial回收器: 串行回收四.ParNew回收器 : 并行回收五.Parallel回收器: 吞吐量優先六.CMS回收器: 低延遲七. G1 回收器: 區域化分代式八. 垃圾回收器總結九. GC日志分析十. 垃圾回收器的新發展