java虚拟机日志_一文快速读懂Java虚拟机的GC日志

1ecbb888892e09b4272a1a52e48f1d08.png一文快速读懂Java虚拟机的GC日志

读懂Java虚拟机的GC日志是处理Java虚拟机内存问题的基本技能。GC日志只是一些人为设定的规则,没有什么技术含量。下面我们就来看看GC日志该怎么理解吧。

首先,Java虚拟机的垃圾回收机制中有一个关键组件-垃圾回收器。到目前为止,Java虚拟机已经实现了5类垃圾收集器分别为:Serial收集器,parnew收集器,parallel scavenge收集器,Serial Old收集器,parallel old 收集器 ,cms收集器,g1收集器。

GC日志就是以上各收集器运行的过程中内存变化的一些日志。而每一种收集器的日志都是由他们自身的实现来决定的,换言之,每种收集器的日志格式都可以不一样,但是虚拟机的设计者为了用户方便阅读,将各个收集器的日志保持一定的共性。

我们来看下面的日志:

0d73101af0a06f2634f6a536e6c5b3b9.png一文快速读懂Java虚拟机的GC日志

GC日志开头的“[GC”或“[Full GC”表明这次垃圾收集的停顿类型,不是用来区分新生代GC还是老年代GC的。如果有Full ,说明这次GC发生了“Stop-The-World"

接下来PSYoungGen 表示的是GC发生的区域,是新生代,这里显示的名称与使用的垃圾收集器是密切相关的。如果使用Parallel Scanvenge垃圾收集器,这里的名字就会显示为”PSYoungGen“。垃圾收集器为Parallel Scanvenge 是一款并行的垃圾收集器,特点为重视吞吐量,而不是gc停顿时间,可以设置自动调节新生代eden区的比率大小和晋升老年代的年龄等参数。

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

除此之外,还有ParNew ,表明用的垃圾收集器是ParNew 一款并行垃圾收集器,defNew表明用的是默认的serial垃圾收集器,单线程的垃圾收集器。

知道了是什么垃圾收集器,自然就知道他们是作用在那个代进行垃圾回收。

后面方括号内的”6305K->776K(9216K)“意思是GC前该内存区域已使用容量->GC后该内存区域已使用容量(该内存区域总容量)”而在方括号之外的“6305K->4880K(19456K)”表示前Java堆已使用空间->GC后Java堆已使用空间(Java堆总容量)。

再往后“0.0061795 secs”表示本次GC所占用的时间,单位是秒。再往后的“[Times: user=0.00 sys=0.00, real=0.01 secs]”是更为详细的数据。user表示用户态消耗的cpu时间;sys表示内核态消耗的cpu时间;real是操作从开始到结束所经过的时间。由于系统有可能并发/并行工作,所以会出现user+sys>real的情况。

新生代日志信息

f47d9ad843a0dba11d77fcabd4c39197.png一文快速读懂Java虚拟机的GC日志

第一行 表明是新生代 Parallel Scanvenge 垃圾收集器

总大小为9216k ,已使用7157k ,eden区空间为8192k, 已经被使用77%

from survivor和to survivor区大小为1024k,其中from survivor已使用75%,tosurvivor未被使用

老年代日志信息

dbee9714046ea6fc95e330b53ff5a8f8.png一文快速读懂Java虚拟机的GC日志

老年代用的是ParOldGen 表示是用的paraller old 收集器, 是parallel scavenge的老年代版本,使用多线程和 标记-整理 算法。 除了这个之外 还有serial old和cms收集器。

总大小为10240k,已经使用4104k,对象空间已经被使用40%。

好了,以上内容由十号笔记整理分享。希望可以帮助到有需要的同学,觉得有帮助的同学可以点赞收藏,也可以转发分享给我们身边的同学一起学习哦!喜欢十号笔记分享的朋友也可以关注一下,每天都会为大家送上不一样的后端技术知识,更多话题也可以在评论区中继续交流与吐槽哦!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值