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

相关推荐
Sayai6 分钟前
Elasticsearch 日志写入链路调优实战:ingest pipeline 补时间戳、时区偏移修复与按值类型路由(附 translog 实测)
大数据·运维·elasticsearch·搜索引擎·性能优化
tianbin91120 分钟前
批处理与微调辅助场景:Claude 中转并发、链路缓存与压测对比
java·开发语言·缓存
萧瑟余晖28 分钟前
Spring Data JPA高级特性详解
后端·spring
frjc28 分钟前
Spring AI 里 ChatClient 和 ChatModel 有什么区别?什么时候该用哪个?
java·开发语言·spring·ai
Wang's Blog37 分钟前
Java 项目实战: 交友项目 - 圈子功能的表设计方案
java·开发语言·交友
利威尔xu41 分钟前
Go IM 源码实战(2):WebSocket 握手 11 步,少 1 个参数连不上
后端·websocket·微服务·面试·golang
楚识科技1 小时前
内网环境 OCR 服务搭建:私有化部署的技术实现与性能优化
性能优化·ocr
文丑颜不良啊1 小时前
LeetCode601~625题目解析
java·leetcode
文丑颜不良啊1 小时前
LeetCode651~675题目解析
java·leetcode
frjc1 小时前
Spring WebFlux SSE 长连接,可以替换为 Java 21 虚拟线程吗?
java·人工智能·spring·ai·ai编程