Troubleshooting系列-gc日志分析及分析工具介绍

Java的垃圾收集(GC)日志提供了有关垃圾收集器的详细信息,包括GC事件、停顿时间、内存使用情况等。通过分析GC日志,可以了解应用程序的垃圾收集行为和性能状况,帮助进行调优故障排查

如何生成GC日志

前期落地实践之JAVA应用启动脚本中有有关gc日志的设置,主要参数如下:

bash 复制代码
# 打印GC日志 
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationStoppedTime -XX:+UseGCLogFileRotation" 
JAVA_OPTS="$JAVA_OPTS -XX:+PrintHeapAtGC -Xloggc:$work_home/logs/gc.log -XX:GCLogFileSize=1m -XX:NumberOfGCLogFiles=10"

相关参数说明可参考ORACLE官网关于JVM参数相关文章

GCViewer介绍

GCViewer是一款用于分析和可视化Java垃圾收集(GC)日志的工具。它提供了一个直观的界面,可以帮助开发人员和性能工程师更好地理解和分析应用程序的垃圾收集行为,并进行性能调优。

官网地址:github.com/chewiebug/G...

需要自行编译成jar执行

bash 复制代码
Toby@TOBY-HYW MINGW64 /d/code
$ git clone https://github.com/chewiebug/GCViewer.git
Toby@TOBY-HYW MINGW64 /d/code/GCViewer (master)
$ mvn clean install -DskipTests=true

生成gcviewer-1.37-SNAPSHOT.jar,执行java -jar gcviewer-1.37-SNAPSHOT.jar 打开图形界面

打开GC日志后,生成概览界面

可在View选择需要查看的内容,默认展示所有 Event details包含各种gc的停顿

右下角是总结、内存和停顿,下图是内存

GCeasy介绍及使用

GCeasy 是一个基于 Web 的垃圾回收日志分析工具,可以用于分析 JVM 的垃圾回收日志,提供可视化的分析结果和建议 。GCeasy 可以分析所有主流的垃圾回收器,包括 CMS、G1、Parallel 和 Serial 等,支持多种垃圾回收日志格式,包括 GC log、Jstat log 和 JMX 等。

官网地址:gceasy.ycrash.cn/

先上传gc日志,需要进行压缩

分析完之后可以生成报告,我的gc日志生成的报告URL如下:gceasy.ycrash.cn/my-gc-repor...

先是总体概览和一些建议 JVM 内存大小,比较清楚知道大小 关键性能指标(KPI) 交互图标非常直观看到gc前后对比,还可以选择 其他的不一一说明了,具体可以看上述URL

总结

整体来说,GCeasy能够分析的内容更多,GCViewer是一个本地jar。如果考虑到信息安全风险,建议使用GCViewer;如果项目中对信息安全要求不高,可以使用GCeasy,还可以将分析报告分享给其他人共同分析。

附件

gcviewer-1.37-SNAPSHOT.jar自己编译下载链接如下:

链接:pan.baidu.com/s/1XwTb6PKm... 提取码:3jwl

上述GCeasy生成的报告地址:

链接:pan.baidu.com/s/103Nru2py... 提取码:ajmb

相关推荐
XiYang-DING5 小时前
【Java】TOP-K问题
java·开发语言
CHANG_THE_WORLD5 小时前
模拟解析:宽度数组 `[1,2,1]`,10个条目的 XRef 流
java·前端·算法
MyY_DO5 小时前
布隆过滤器todo
java
砍材农夫5 小时前
spring-ai 第五模型介绍
java·人工智能·spring
mu_guang_5 小时前
计算机体系结构2-内存一致性
java·后端·spring·计算机体系结构
小旭95275 小时前
SpringBoot + 七牛云 + Quartz:图片存储与定时清理
java·spring boot·后端·mybatis
小码哥_常5 小时前
揭秘!Spring Cloud Gateway为何独宠WebFlux
后端
一个有温度的技术博主5 小时前
Redis主从同步进阶:深入理解增量同步与性能优化
数据库·redis·性能优化
爱码驱动6 小时前
Java多线程详解(5)
java·开发语言·多线程
橘子编程6 小时前
计算机内存与缓存完全指南
java·计算机网络·spring·缓存