微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

【JVM】GC四:GC日志格式解析

后面会结合实例来说明,先准备一个jar包,这里我拿的是一个启动 eureka 的 SpringBoot 项目。

在这里插入图片描述

启动成功后在浏览器验证能够正常访问:

在这里插入图片描述

那下面我们就分别配置不同的垃圾收集器,然后分析它们的日志内容

PS:打印GC日志的JVM参数是:-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:./gc.log -jar

@L_404_0@1.Parallel Scavenge收集器(认)

因为 Parallel Scavenge 是认收集器,所以只用在启动时指定打印GC日志即可

java -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:./gc.log -jar eureka-server.jar
  • 1

在这里插入图片描述

在桌面打开gc.log如下:

在这里插入图片描述

取图中标出的一行,分析一下是什么意思:

[GC (Allocation Failure) 
[PSYoungGen: 33280K[Young区回收前]->3123K[Young区回收后] (38400K[Young区总大小])]
33280K[整个堆回收前]->3139K[整个堆回收后](125952K[整个堆总大小]), 0.0158731 secs] 
[Times: user=0.02 sys=0.00, real=0.02 secs] 

2.CMS收集器

CMS收集器需要在启动时手动设置

java -XX:+UseConcmarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:./gc-cms.log -jar eureka-server.jar

在这里插入图片描述

在桌面打gc-cms.log如下:

在这里插入图片描述


对于青年代 ParNew 每行的日志内容与 Parallel Scavenge 类似,因为两者都是并行收集器,这里就不说了。但是,在老年代就还可以看到CMS的垃圾回收的过程:

在这里插入图片描述

3.G1收集器

G1是一个同时可以处理青年代与老年代的收集器,若要使用G1收集器,也需要在启动项目时手动配置:-XX:+UseG1GC

java -XX:+UseG1GC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:./gc-g1.log -jar eureka-server.jar

在这里插入图片描述


在桌面打开gc-g1.log如下:

在这里插入图片描述


上面的内容是YoungGC,下面展示MixedGC的日志:

在这里插入图片描述


由于示例代码中并未出现FullGC,所以这里就不演示了。更多G1先关格式解析可参考:Understanding G1 GC Logs

PS:GC 日志其实一般是用来 GC 调优的,关于 GC 调优可以参考我的这篇文章

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐