支持的GC日志格式

更新时间:

本文主要介绍了GC日志分析工具对各种JDK类型,JDK版本,GC类型和JVM参数的支持情况。

说明

本文中“支持”是指这个日志可正常解析并且其打印内容会被工具分析,“忽略”是指日志可正常解析但其打印的内容会被忽略,“不支持”是指使用后可能引起工具解析异常或结果错误。

支持的JDK类型

本工具只支持OpenJDK及其下游发行版产生的GC日志。

支持的JDK版本

支持Java 8,11和17的GC日志。其它版本的JDK由于不是长期支持版本,不保证能够正常解析。

支持的GC类型

GC类型

对应的JVM参数

支持情况

Serial GC

UseSerialGC

支持。

Parallel GC

UseParallelGC

支持。

CMS GC

UseConcMarkSweepGC

支持。

G1 GC

UseG1GC

支持。

Shenandoah GC

UseShenandoahGC

不支持。

ZGC

UseZGC

支持。

Epsilon GC

UseEpsilonGC

不支持。

支持的JVM参数

无论是哪个JDK版本,日志打印都必须符合以下要求:

  1. 至少打开了一个打印日志时间相关的参数。

  2. 不要把GC日志打印到stdout里,stdout可能会混杂其它日志干扰工具解析。

JDK8

多数情况下推荐使用的GC日志打印参数是-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:gc.log,其它功能可自行按需开启。

具体的参数支持情况:

参数

支持情况

更多

PrintGCDetails

支持。

PrintGC

支持。

推荐使用:

-XX:+PrintGCDetails

PrintGCDateStamps

PrintGCDateStamps和

PrintGCTimeStamps至少要开启一个,否则不支持。

推荐使用:

-XX:+PrintGCDateStamps

PrintGCTimeStamps

PrintGCDateStamps和

PrintGCTimeStamps至少要开启一个,否则不支持。

推荐使用:

-XX:+PrintGCDateStamps

verbose:gc

支持。

推荐使用:

  • -XX:+PrintGCDetails

  • -XX:+PrintGCDateStamps

Xlog:gc

必须设置此参数。

ATP不支持从stdout里分析GC日志。

PrintGCCause

支持,且不支持关闭此参数。

推荐保持默认即可。

PrintGCID

支持。

UseGCLogFileRotation

当前工具只支持单个日志文件的分析,不支持把多个rotate的GC日志合并上传分析。

其它未提到的参数的输出内容都会被忽略。

JDK9及以上

JDK9时整个JDK的日志打印系统被完全重构,称为Unified Logging,具体用法可以参考Oracle官方文档。设置GC日志打印参数时只需满足以上两点条件都能正常解析,多数情况下推荐使用的GC日志打印参数是-Xlog:gc*:gc.log:time,其他功能可自行按需开启。

ATP当前仅支持分析-Xlog:gc*或-Xlog:gc输出的GC日志内容,其他更详细的日志将会被忽略。