zoukankan      html  css  js  c++  java
  • 理解Java GC日志

    idea 在vm options处加入-XX:+PrintGCDetails,可打印GC日志。

     1 public class ReferenceCountingGC {
     2 
     3     public Object instance=null;
     4 
     5     private static final int _1MB=1024*1024;
     6 
     7     private byte[] bigSize=new byte[2*_1MB];
     8 
     9     public static void testGC(){
    10         ReferenceCountingGC objA=new ReferenceCountingGC();
    11         ReferenceCountingGC objB=new ReferenceCountingGC();
    12         objA.instance=objB;
    13         objB.instance=objA;
    14 
    15         objA=null;
    16         objB=null;
    17 
    18         System.gc();
    19     }
    20 
    21     public static void main(String[] args) {
    22         testGC();
    23     }
    24 
    25 }

    打印GC日志为:

    [GC (Allocation Failure) [DefNew: 3762K->512K(4928K), 0.0044320 secs] 3762K->2609K(15872K), 0.0171251 secs] [Times: user=0.00 sys=0.00, real=0.02 secs]
    [Full GC (System.gc()) [Tenured: 2097K->560K(10944K), 0.0031949 secs] 4657K->560K(15872K), [Metaspace: 2131K->2131K(4480K)], 0.0036546 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
    Heap
    def new generation total 4992K, used 91K [0x04800000, 0x04d60000, 0x09d50000)
    eden space 4480K, 2% used [0x04800000, 0x04816d20, 0x04c60000)
    from space 512K, 0% used [0x04c60000, 0x04c60000, 0x04ce0000)
    to space 512K, 0% used [0x04ce0000, 0x04ce0000, 0x04d60000)
    tenured generation total 10944K, used 560K [0x09d50000, 0x0a800000, 0x14800000)
    the space 10944K, 5% used [0x09d50000, 0x09ddc140, 0x09ddc200, 0x0a800000)
    Metaspace used 2149K, capacity 2280K, committed 2368K, reserved 4480K

    ——————————————————————————————————————

    “[GC” 说明垃圾收集的停顿类型。

    “[Full GC”说明这次GC发生了Stop-The-World。此处是调用了System.gc()所触发的收集。

    “[DefNew”、“[Tenured”表示GC发生的区域。Default New Generation。

    “3762K->512K(4928K)”表示GC前该内存区域已使用容量->GC后该区域已使用容量(该内存区域总容量)。

    “3762K->2609K(15872K)”表示GC前java堆已使用容量->GC后java堆已使用容量(java堆总容量)。

    “0.0171251 secs”表示该内存区域GC所占用的时间,单位是秒。

    “[Times: user=0.00 sys=0.00, real=0.02 secs] ”表示用户态消耗的CPU时间,内核态消耗的CPU事件,操作从开始到结束所经过的墙钟时间(包括各种非运算的等待耗时)。

    “tenured generation”老年代

    “the space 10944K, 5% used”表示老年区的内存大小是10944K,5%被使用。

    “Metaspace” Java8中,永久代已经被移除,被一个称为“元数据区”(元空间)的区域所取代。

  • 相关阅读:
    营销运营中会遇到的名词及解释
    常用excel函数公式及操作示例
    opensuse安装pycharm
    Atom 基础使用
    git使用
    初学Python(第一课)
    django新手第一课
    浅谈session,cookie,sessionStorage,localStorage的区别及应用场景
    事件冒泡的应用
    django站点管理
  • 原文地址:https://www.cnblogs.com/award/p/10834533.html
Copyright © 2011-2022 走看看