[转帖]GC日志分析工具——GCViewer案例

gc,日志,分析,工具,gcviewer,案例 · 浏览次数 : 0

小编点评

**GCViewer介绍** GCViewer是一款用于分析GC日志的工具,它提供两种版本:免费的GCViewer和收费的GCEasy。 **GCViewer使用说明** 1. 下载并解压缩GCViewer的jar文件。 2. 双击gcviewer-1.36.jar打开主界面。 3. 选择要分析的gc日志文件。 4. 选择要分析的标签页。 5. 观察GC的分析结果。 **GCViewer功能** * **ChartChart标签页:**显示每次GC的图表,包括堆的总大小、使用量等。 * **Event detail标签页:**展示了minor GC和full GC触发的原因、次数、最长时间等信息。 * **Summary、Memory、Pause标签页:**提供GC运行状态的摘要、内存使用情况、暂停信息等。 **使用GCViewer的提示** * 在分析GC日志之前,请确保您的JVM参数设置合理。 * 可以使用"view"选项选择感兴趣的曲线。 * 可以使用"heap Dump Initiated GC"等选项导出GC数据。

正文

 

一、GCViewer介绍

业界较为流行分析GC日志的两个工具——GCViewer、GCEasy。GCEasy部分功能还是要收费的,今天笔者给大家介绍一下GCViewer的使用与功能点。

二、GCViewer 使用

2.1 编译

首先,在github上搜索GCViewer项目,并下载到本地。GCViewer项目没有提供现成的release版本,利用如下maven编译命令即可完成GCViewer的编译工作,最终生成一个gcviewer-1.36.jar。

mvn clean install -DskipTests

注:

  • 官网上给出的maven命令并没有-DskipTests,笔者在编译过程中tests部分有异常导致编译失败,因此添加了-DskipTests。
  • 在编译时,有异常表示要依赖git、svn,因此在编译前请安装这两个软件。

为了方便看官们去使用该工具,笔者将编译好的jar,存放百度网盘,欢迎下载。

链接:https://pan.baidu.com/s/1CCX6bg3zw-HtcX5Ls9CBXQ 提取码:ea5q

2.2 GCViewer介绍

双击gcviewer-1.36.jar,即可见到主界面,如下图:

图片

接着,选择要分析的gc日志文件,即可出现分析界面,主要关注Chart、Event detail、summary/memory/pause三个标签页。

2.2.1 Chart

Chart标签页把每次GC的采集信息,转换成图表用以展示,包括堆的总大小、堆的使用量、单次full gc的时间等(有些折线是特定GC收集器所特有的)。

图片

乍一看该图形,有点乱乱的感觉,大家可以点击工具栏中的view,选择自己感兴趣的曲线,如下所示:

图片

2.2.2 Event detail

Event detail标签页如下图所示,展示了minor GC和full GC触发的原因、次数、最长时间、最短时间等信息。

图片

由图可知

触发Young CG的原因有:

  • allocation failure,年轻代没有足够的内存去存放对象。
  • gclocker failure,JNI临界区被释放时会触发一次GC。

触发Full GC的原因有:

  • ergonomics,当新生代要晋升到老年代的占用空间,要大于老年代剩余内存空间时,便会触发full gc。
  • metadata gc threshold,metadata空间不够用时,便会触发一次full gc。(metadata的初始值可以使用java -XX:+PrintFlagsInitial命令来看看)
  • Heap Dump Initiated GC,执行jmap -dump:live pid,或jstat -gccause pid。
  • system gc,显示调用了System.gc()。

2.2.3 Summary、Memory、Pause

图片

  • 进程运行66+h。
  • heap最大使用率达到 99.8%。
  • full gc最多的一次回收了14G heap。

图片

  • 老年代最大使用率达到100%。
  • 新生代最大使用率达到99.7%。
  • 灰色部分参数由于JVM参数设置原因,没有相应的值。

图片

Pause标签页展示的信息与Event detail标签页高度重合。

三、参考链接

https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html

与[转帖]GC日志分析工具——GCViewer案例相似的内容:

[转帖]GC日志分析工具——GCViewer案例

原创 石页粑粑 来自zxsk的码农 2020-09-28 06:18 一、GCViewer介绍 业界较为流行分析GC日志的两个工具——GCViewer、GCEasy。GCEasy部分功能还是要收费的,今天笔者给大家介绍一下GCViewer的使用与功能点。 二、GCViewer 使用 2.1 编译 首

【转帖】71.常用的显示GC日志的参数、GC日志分析、日志分析工具的使用

目录 1.常用的显示GC日志的参数2.图解垃圾`GC`日志(重要)3.日志分析工具的使用 1.常用的显示GC日志的参数 解释: 日志中,GC和Full GC表示的是GC的类型。GC只在新生代进行,Full GC包括新生代和老年代、方法区。 Allocation Failure:GC发生的原因,一般新

【转帖】JAVA GC日志分析

https://zhuanlan.zhihu.com/p/613592552 ​ 目录 1. GC分类 针对HotSpot VM的实现,它里面的GC按照回收区域又分为两大种类型:一种是部分收集(Partial GC),一种是整堆收集(Full GC) 部分收集(Partial GC):不是完整收集整

[转帖]GC overhead limit exceeded原因分析及解决方案

https://zhuanlan.zhihu.com/p/88956975 最近一个上线运行良好的项目出现用户无法登录或者执行某个操作时,有卡顿现象。查看了日志,出现了大量的java.lang.OutOfMemoryError: GC overhead limit exceeded错误。 oracl

[转帖] 记一次使用gdb诊断gc问题全过程

记一次使用gdb诊断gc问题全过程 原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处。 简介# 上次解决了GC长耗时问题后,系统果然平稳了许多,这是之前的文章《GC耗时高,原因竟是服务流量小?》然而,过了一段时间,我检查GC日志时,又发现了一个GC问题,如下:从这个图中可

[转帖] GC耗时高,原因竟是服务流量小?

原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处。 简介# 最近,我们系统配置了GC耗时的监控,但配置上之后,系统会偶尔出现GC耗时大于1s的报警,排查花了一些力气,故在这里分享下。 发现问题# 我们系统分多个环境部署,出现GC长耗时的是俄罗斯环境,其它环境没有这个问题,

[转帖]GC 日志

https://www.xjx100.cn/news/188814.html?action=onClick 垃圾回收器的发展历史 1999年:随JDK1.3.1一起来的串行方式Serial GC(第一款GC),ParNew GC是SerialGC的多线程版本。2002年:2月26日,Parallel

[转帖]记一次使用gdb诊断gc问题全过程

https://www.cnblogs.com/codelogs/p/17092141.html 简介# 上次解决了GC长耗时问题后,系统果然平稳了许多,这是之前的文章《GC耗时高,原因竟是服务流量小?》然而,过了一段时间,我检查GC日志时,又发现了一个GC问题,如下:从这个图中可以发现,我们GC有

[转帖]【JVM】常用虚拟机参数及实例

常用参数表 参数描述-XX:+PrintGC启动java虚拟机后,只要遇到gc,就打印日志-XX:+PrintGCDetailsgc发生时,打印更详细的日志-XX:+PrintHeapAtGC每一次GC后,都打印堆信息-XX:+PrintGCTimeStampsgc发生时,额外打印gc时间,该时间为

[转帖]Code Cache满导致应用性能降低

https://juejin.cn/post/6844903601786060808 0 问题描述 一个应用在运行一段时间后,随着访问量不断增加,突然处理能力下降。但是从流量,jstack,gc上看基本正常。感觉好像突然从 “健康状态” 进入了 “虚弱状态”。 1 排查问题 在JVM日志里,可以发现