java排查full gc_一次频繁Full GC问题排查过程分享

问题描述

应用收到频繁Full GC告警

问题排查

登录到对应机器上去,查看GC日志,发现YGC一分钟已经达到了15次,比Full GC还要频繁一些,其中Full GC平均10分钟超过了4次,如下图

java排查full gc_一次频繁Full GC问题排查过程分享_第1张图片

使用jstat -gcutil 5280 1000查看实时GC情况,年老代采用的是CMS收集器,发现触发Full GC的原因是年老代占用空间达到指定阈值70%(-XX:CMSInitiatingOccupancyFraction=70)。

这时候猜测是某个地方频繁创建对象导致,通过jmap -dump:format=b,file=temp.dump 5280 dump文件,然后下载到本地通过jvisualvm分析对象的引用链的方式来定位具体频繁创建对象的地方,dump文件下载下来有5G多,整个导入过程都花了10多分钟。想查看所占空间较多对象的引用链,直接OOM了,dump对象太大了。这时候就换了种思路,查看占用空间比较大的一系列对象,看能不能找出什么端倪。占用空间最大的几类对象如下图

java排查full gc_一次频繁Full GC问题排查过程分享_第2张图片 发现排第一的chart[]对象里面,存在一些metrics监控的具

你可能感兴趣的:(java排查full,gc)