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版本,日志打印都必须符合以下要求:
至少打开了一个打印日志时间相关的参数。
不要把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
,其它功能可自行按需开启。
当前本工具只支持分析-Xlog:gc*或-Xlog:gc输出的GC日志内容,其它更详细的日志都会被忽略。
- 本页导读 (0)