GC.log日志分析

ParNew 收集器是年轻代常用的垃圾收集器,它采用的是复制算法,youngGC 时一个典型的日志信息如下所示:

2019-06-30T16:30:21.747+0800: 1118357.748: [GC (Allocation Failure) 2019-06-30T16:30:21.747+0800: 1118357.748: [ParNew: 917144K->46045K(961216K), 0.1363811 secs] 1069122K->198023K(2009792K), 0.1367203 secs] [Times: user=0.25 sys=0.01, real=0.14 secs]

分析

2019-06-30T16:30:21.747+0800: Mirror GC 发生的时间;
 1118357.748: GC 开始时,相对 JVM 启动的相对时间,单位时秒,这里是210h+,14d+; 
 [GC :用来区分(distinguish)是 Minor GC 还是 Full GC 的标志(Flag). 这里的 GC 表明本次发生的是 Minor GC.
 (Allocation Failure) :young gc
 2019-06-30T16:30:21.747+0800: 1118357.748:  Mirror GC 发生的时间;
 [ParNew: 收集器名称,这里是 ParNew 收集器,它使用的是并行的 mark-copy 算法,GC 过程也会 Stop the World;
 917144K->46045K 收集前后年轻代的使用情况,这里是 0.87G->44M;
 (961216K) :整个年轻代的容量,这里是 0.91G,
 0.1363811 secs] :Duration for the collection w/o final cleanup
 1069122K->198023K(2009792K), 收集前后整个堆的使用情况,这里是 1.01G->193M;
 0.1367203 secs] ParNew 收集器标记和复制年轻代活着的对象所花费的时间(包括和老年代通信的开销、对象晋升到老年代开销、垃圾收集周期结束一些最后的清理对象等的花销)
 [Times: 
 user=0.25 :GC 线程在垃圾收集期间所使用的 CPU 总时间;
 sys=0.01 :系统调用或者等待系统事件花费的时间;
 , real=0.14 secs :应用被暂停的时钟时间,由于 GC 线程是多线程的,导致了 real 小于 (user+real),如果是 gc 线程是单线程的话,real 是接近于 (user+real) 时间。
 ]

你可能感兴趣的:(java,笔记)