如何理解GC日志

理解GC日志

[plain] view plain copy

  1. 217.539: [GC (Allocation Failure) 217.539: [DefNew: 102646K->10770K(102976K), 0.0415902 secs] 239776K->153169K(331528K), 0.0416785 secs] [Times: user=0.03 sys=0.02, real=0.04 secs]   
  2. 221.383: [Full GC (System.gc()) 221.383: [Tenured: 142398K->92063K(228552K), 0.3029342 secs] 193477K->92063K(331528K), [Metaspace: 65120K->65120K(68992K)], 0.3031417 secs] [Times: user=0.30 sys=0.00, real=0.30 secs]   
  3. 281.396: [Full GC (System.gc()) 281.396: [Tenured: 92063K->93342K(228552K), 0.2394086 secs] 129487K->93342K(331528K), [Metaspace: 65137K->65137K(68992K)], 0.2395739 secs] [Times: user=0.23 sys=0.00, real=0.24 secs]   

1. 最前面的数字217.539:代表GC发生的时间,从虚拟机启动开始算起

2. GC日志开头的[GC和FULL GC]说明这次垃圾收集的停顿类型,而不是区分新生代和老年代的。

FULL GC : 说明这次GC是发生了线程停顿Stop-The-World,如果是System.gc()方法所触发的收集,,那么在这里将显示[Full GC (System)

3. [DefNew,[Tenured,[Perm表示GC发生的区域,这里显示的区域名称和使用的垃圾收集器是密切相关的

1>在Serial收集器中新生代名为Default New Generation ,显示就是DefNew

2>垃圾收集器ParNew中新生代名称就会变为[Parnew,意思为Parallel New Generation 

3>如果采用Parrallel Scavenge收集器,那么它配套的新生代名称为PSYongGen

老年代和永久代同理,名称由垃圾收集器决定

4.[DefNew: 102646K->10770K(102976K), 0.0415902 secs] 239776K->153169K(331528K), 0.0416785 secs] [Times: user=0.03 sys=0.02, real=0.04 secs] 就这段而言,

1>方括号内部102646K->10770K(102976K)的含义是GC前改内存区域已使用内存->GC后改内存区域使用容量(该内存区域总容量)

2>方括号外 239776K->153169K(331528K)表示GC前java堆已使用容量->GC后java堆已使用容量(java堆总容量)

3>在往后时间表示该内存区域gc清理用的时间

4>[Times: user=0.03 sys=0.02, real=0.04 secs]

这里面的user、sys和real与linux的time命令所输出的时间含义一致,分别表示用户态消耗的CPU时间、内核态消耗的CPU事件和操作从开始到结束经历的墙钟时间

墙钟时间和CPU时间的区别是,墙钟时间包括各种非运算的等待耗时(i/o,线程阻塞),而CPU时间不包括这些,但是如果是多核,

多线程会叠加这些CPU时间,此时user或sys时间超过real时间完全是正常的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值