JVM G1收集器日誌分析

package com.jvm.g1;

/**
 * -verbose:gc
 * -Xms10M
 * -Xmx10M
 * -XX:+UseG1GC
 * -XX:+PrintGCDetails
 * -XX:+PrintGCDateStamps
 * -XX:MaxGCPauseMillis=200m
 *
 */
public class MyTest {


    public static void main(String[] args) {
        int size = 1024 * 1024;

        byte[] myAlloc1 = new byte[ size];
        byte[] myAlloc2 = new byte[ size];
        byte[] myAlloc3 = new byte[ size];
        byte[] myAlloc4 = new byte[ size];

        System.out.println("MyTest.main");
    }
}
  • 我們來看G1 Humongous 由於分配的數組代大小是1M大於了region的50%,因此被分配到Humongous裏
  • (young) (initial-mark), 0.0017556 secs 進行了young gc 初始標記 花費了0.0017556 secs
  • [Parallel Time: 1.3 ms, GC Workers: 8] GC彙總的信息,並行的時間1.3 ms,有8個gc線程同時執行
  • Ext Root Scanning (ms) 進行根節點掃描 
  • Update RS 更新RSet 集合,記錄那些的region 對象 引用當前region的對象的集合
  • Processed Buffers: 記錄引用變化的緩存空間
  • Scan RS 掃描RSet 集合所花費的時間
  • Object Copy 對象複製,將存活的從一個region中 複製到另外一個region中;將之前的region 清空掉。
  • Termination :gc線程在終至前 回檢查其他線程 還有沒有要清理的數據
  • GC Worker Other (ms)、GC Worker Total (ms)、GC Worker End (ms):記錄gc 統計的信息
  •    [Clear CT: 0.1 ms]   CT就是card table
  •  [Eden: 2048.0K(6144.0K)->0.0B(2048.0K) Survivors: 0.0B->1024.0K Heap: 3581.1K(10.0M)->2584.1K(10.0M)]
     [Times: user=0.00 sys=0.00, real=0.00 secs]  表示執行完young gc 之後的結果;Eden經過yong gc 之後 一定是空的 這裏就驗證之前所描述的,Survivors 從0 變成1024k ,說明有一個對象進入Survivors空間。總的堆 從3581.1K(10.0M)->2584.1K(10.0M);因爲jvm 中不單單有我們生成的對象佔用內存,還有其他對象。
  • [GC concurrent-root-region-scan-start]
    [GC concurrent-root-region-scan-end, 0.0005063 secs] 全局併發標記的掃描
    [GC concurrent-mark-start]
    [GC concurrent-mark-end, 0.0001488 secs] 全局併發標記
/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/bin/java -verbose:gc -Xms10M -Xmx10M -XX:+UseG1GC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:MaxGCPauseMillis=200m "-javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=54417:/Applications/IntelliJ IDEA.app/Contents/bin" -Dfile.encoding=UTF-8 -classpath /Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/ext/cldrdata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/ext/jaccess.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/ext/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/ext/nashorn.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/jfxswt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/lib/ant-javafx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/lib/dt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/lib/javafx-mx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/lib/jconsole.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/lib/packager.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/lib/sa-jdi.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/lib/tools.jar:/Users/liming/jvm/target/classes:/Users/liming/repository/cglib/cglib/3.3.0/cglib-3.3.0.jar:/Users/liming/repository/org/ow2/asm/asm/7.1/asm-7.1.jar com.jvm.g1.MyTest
2020-03-20T23:03:21.777-0800: [GC pause (G1 Humongous Allocation) (young) (initial-mark), 0.0017556 secs]
   [Parallel Time: 1.3 ms, GC Workers: 8]
      [GC Worker Start (ms): Min: 108.7, Avg: 108.8, Max: 109.0, Diff: 0.3]
      [Ext Root Scanning (ms): Min: 0.3, Avg: 0.5, Max: 0.7, Diff: 0.4, Sum: 4.0]
      [Update RS (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
         [Processed Buffers: Min: 0, Avg: 0.0, Max: 0, Diff: 0, Sum: 0]
      [Scan RS (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
      [Code Root Scanning (ms): Min: 0.0, Avg: 0.0, Max: 0.1, Diff: 0.1, Sum: 0.1]
      [Object Copy (ms): Min: 0.4, Avg: 0.5, Max: 0.6, Diff: 0.3, Sum: 3.8]
      [Termination (ms): Min: 0.0, Avg: 0.1, Max: 0.2, Diff: 0.2, Sum: 0.7]
         [Termination Attempts: Min: 4, Avg: 5.6, Max: 7, Diff: 3, Sum: 45]
      [GC Worker Other (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.1]
      [GC Worker Total (ms): Min: 0.9, Avg: 1.1, Max: 1.2, Diff: 0.3, Sum: 8.8]
      [GC Worker End (ms): Min: 109.9, Avg: 109.9, Max: 109.9, Diff: 0.0]
   [Code Root Fixup: 0.0 ms]
   [Code Root Purge: 0.0 ms]
   [Clear CT: 0.1 ms]
   [Other: 0.4 ms]
      [Choose CSet: 0.0 ms]
      [Ref Proc: 0.2 ms]
      [Ref Enq: 0.0 ms]
      [Redirty Cards: 0.1 ms]
      [Humongous Register: 0.0 ms]
      [Humongous Reclaim: 0.0 ms]
      [Free CSet: 0.0 ms]
   [Eden: 2048.0K(6144.0K)->0.0B(2048.0K) Survivors: 0.0B->1024.0K Heap: 3581.1K(10.0M)->2584.1K(10.0M)]
 [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-03-20T23:03:21.779-0800: [GC concurrent-root-region-scan-start]
2020-03-20T23:03:21.780-0800: [GC concurrent-root-region-scan-end, 0.0005063 secs]
2020-03-20T23:03:21.780-0800: [GC concurrent-mark-start]
2020-03-20T23:03:21.780-0800: [GC concurrent-mark-end, 0.0001488 secs]
2020-03-20T23:03:21.780-0800: [GC remark 2020-03-20T23:03:21.780-0800: [Finalize Marking, 0.0002135 secs] 2020-03-20T23:03:21.780-0800: [GC ref-proc, 0.0000556 secs] 2020-03-20T23:03:21.780-0800: [Unloading, 0.0006755 secs], 0.0010836 secs]
 [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-03-20T23:03:21.781-0800: [GC pause (G1 Humongous Allocation) (young), 0.0014894 secs]
   [Parallel Time: 0.8 ms, GC Workers: 8]
      [GC Worker Start (ms): Min: 112.6, Avg: 112.9, Max: 113.3, Diff: 0.7]
      [Ext Root Scanning (ms): Min: 0.0, Avg: 0.1, Max: 0.5, Diff: 0.5, Sum: 1.0]
      [Update RS (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
         [Processed Buffers: Min: 0, Avg: 0.0, Max: 0, Diff: 0, Sum: 0]
      [Scan RS (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
      [Code Root Scanning (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
      [Object Copy (ms): Min: 0.0, Avg: 0.2, Max: 0.4, Diff: 0.4, Sum: 1.3]
      [Termination (ms): Min: 0.0, Avg: 0.1, Max: 0.1, Diff: 0.1, Sum: 0.7]
         [Termination Attempts: Min: 1, Avg: 1.5, Max: 4, Diff: 3, Sum: 12]
      [GC Worker Other (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
      [GC Worker Total (ms): Min: 0.0, Avg: 0.4, Max: 0.7, Diff: 0.7, Sum: 3.1]
      [GC Worker End (ms): Min: 113.3, Avg: 113.3, Max: 113.3, Diff: 0.0]
   [Code Root Fixup: 0.0 ms]
   [Code Root Purge: 0.0 ms]
   [Clear CT: 0.2 ms]
   [Other: 0.5 ms]
      [Choose CSet: 0.0 ms]
      [Ref Proc: 0.3 ms]
      [Ref Enq: 0.0 ms]
      [Redirty Cards: 0.1 ms]
      [Humongous Register: 0.0 ms]
      [Humongous Reclaim: 0.0 ms]
      [Free CSet: 0.0 ms]
   [Eden: 1024.0K(2048.0K)->0.0B(1024.0K) Survivors: 1024.0K->1024.0K Heap: 3649.1K(10.0M)->3545.0K(10.0M)]
 [Times: user=0.01 sys=0.00, real=0.00 secs] 
2020-03-20T23:03:21.783-0800: [GC cleanup 4589K->4589K(10M), 0.0007612 secs]
 [Times: user=0.00 sys=0.00, real=0.00 secs] 
MyTest.main
Heap
 garbage-first heap   total 10240K, used 4568K [0x00000007bf600000, 0x00000007bf700050, 0x00000007c0000000)
  region size 1024K, 2 young (2048K), 1 survivors (1024K)
 Metaspace       used 3095K, capacity 4496K, committed 4864K, reserved 1056768K
  class space    used 339K, capacity 388K, committed 512K, reserved 1048576K

Process finished with exit code 0

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章