JVM GC日志分析
我一般情况下很少去看JVM的GC日志,除非遇到了非正常的频繁YGC/FGC时,去排查每次GC的原因及耗时情况(不过这些大部分也是由监控来读取这些参数);
1. 查看GC日志
1.1 通过命令的方式
jstat -gc 8563 1000 20
1000:每秒输出一次;
20:输出20次;
1.2 通过启动参数查看
在JVM的启动参数里配置GC日志的参数:
- -XX:+PrintGC 输出GC日志;
- -XX:+PrintGCDetails 输出GC的详细日志;
- -XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式)
- -XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2020-07-25T21:53:59.234+0800)
- -XX:+PrintHeapAtGC 在进行GC的前后打印出堆的信息
- -Xloggc:…/logs/gc.log 日志文件的输出路径
2. 分析YGC日志
[PSYoungGen: 511K->488K(1024K)] 511K->488K(1536K), 0.0009634 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
3. 分析FGC日志
[PSYoungGen: 504K->494K(1536K)] [ParOldGen: 296K->252K(512K)] 800K->747K(2048K), [Metaspace: 3218K->3218K(1056768K)], 0.0100267 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]
4. 在线分析GC日志
GC Easy提供在线分析GC日志,只需要将GC日志文件上传即可得到分析结果;功能可谓非常强大;