什么是垃圾收集日志?如何启用日志分析?

>>强大,10k+点赞的 SpringBoot 后台管理系统竟然出了详细教程!

(给ImportNew加星标,提高Java技能)

编译:ImportNew/唐尤华


什么是垃圾收集日志?如何启用日志分析?


与大多数工程师的想法相反,垃圾回收对应用程序有着重要影响。为了优化内存与垃圾回收参数,解决与内存相关的问题,必须分析垃圾收集日志。


启用GC日志


启动应用程序时设置参数启用GC日志记录


Java 8及早先版本


下面参数适用于JDK 8及之前所有Java版本。


-XX:+PrintGCDetails -Xloggc:<gc-log-file-path>


例如:


-XX:+PrintGCDetails -Xloggc:/opt/tmp/myapp-gc.log


Java 9及更高版本


以下参数从JDK 9开始的所有Java版本都支持。


-Xlog:gc*:file=<gc-log-file-path>


例如:


-Xlog:gc*:file=/opt/tmp/myapp-gc.log


如何分析GC日志?


设置上面的参数得到的GC日志示例:


什么是垃圾收集日志?如何启用日志分析?


GC日志包含丰富的信息,但要了解GC日志并不容易,主要原因是缺少文档,没有足够的文档解释GC日志格式。最重要的是,GC日志的格式尚未标准化。


依据JVM供应商(Oracle、IBM、HP、Azul等),Java版本(1.4、5、6、7、8、9),GC算法(串行、并行、CMS、G1、Shenandoah),以及设置的GC系统属性(-XX:+ PrintGC,-XX:+ PrintGCDetails,-XX:+ PrintGCDateStamps,-XX:+ PrintHeapAtGC…)不同,日志有很大差异。按照这种排列和组合,很容易就有多达60多种不同的GC日志格式。


要分析GC日志,强烈建议使用日志分析工具,比如GCeasy、HPJmeter。这些工具可以解析GC日志,支持数据可视化,报告关键性能以及其他有用的指标。


推荐阅读

(点击标题可跳转阅读)

JVM 初探:内存分配、GC 原理与垃圾收集器

JSON 文件映射成 Java 枚举

Java 面试题:反转不可变列表


看完本文有收获?请转发分享给更多人

关注「ImportNew」,提升Java技能

好文章,我在看❤️

原文始发于微信公众号(ImportNew):什么是垃圾收集日志?如何启用日志分析?