后面会结合实例来说明,先准备一个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 (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] 举报,一经查实,本站将立刻删除。