当前位置: 首页 > news >正文

GC如何排查

GC问题分为四步走

  1. 现象确认:接口超时?RT异常? CPU使用率异常?
  2. 数据采集:开启GC日志 PrintGCDetails 会把GC日志输出到log文件
  3. 分析GC日志:使用GCeasy在线分析,将log上传,生成图形化界面。youngGc频繁可能是年轻代较小,高并发创建大量对象。FullGc频繁可能是老年代较小,或者年轻代晋升年龄太小。
  4. 定位根因:使用jmap dump命令生成堆区快照,使用Mat工具分析哪个对象占用大量内存,引用追溯

生产问题案例

top看整体所有进程
top -H 看指定进程的情况

现象:

  • 接口RT大量超时,CPU使用率90+%
  • 首先重启一下试试。重启后很快又开始卡死
  1. top 查看进程cpu使用情况:主要关注us 是用户态cpu使用情况 sy是系统调用cpu使用情况id是线程空闲的情况。 同时找到java进程pid
  2. 查看进程所有线程:top -H -p {pid} 看进程内部所有线程的使用情况。看java进程内部cpu使用率最高的线程是业务线程还是gc线程
  3. 看GC情况:jstat -gcutil {pid} 1000 10 重点看这4列 ;S0/S1:幸存者区; E: Eden区; 0: 老年代 ;YGC/YGCT: YoungGc次数和耗时 ; FGC/FGCT: FullGc次数和耗时; GCT: 总GC耗时
  4. 典型异常:Eden区秒满,很快爆满。 0老年代只升不降 FGC频繁
  5. 导出快照 jmap -dump
  6. 使用MAT分析

首先看到接口RT大量超时,cpu使用率很高
重启后,没效果,cpu仍然很快飙升,接口超时
首先使用top查看进程使用情况,看到java进程 cpu使用率很高
继续使用top -H -p {pid} 查看java进程 内部线程使用情况 。看到是gc线程的cpu使用率很高
查看gc情况 jstat -gcutil {pid} 1000 10 。看到年轻代 老年代使用率都爆满,只升不降,gc没效果。 youngGc次数 和FullGc次数相当,怀疑是内存泄露导致
分析快照 jmap -dump 。使用MAT工具分析

jstat -gcutil {pid} 1000 10 查看GC情况,8大场景

  1. E年轻代 和0老年代 都爆满,且GC后无效果,每次YoungGc都会导致FullGc(因为YoungGc 需要晋升的对象,发现老年代不够用,导致触发FullGc)
  2. E 年轻代波动上涨,YoungGc后下降,YoungGc很快10ms左右。 0老年代平稳,FGC频率很低,几天一次。健康状况
  3. E年轻代涨的飞快,几秒就满,YoungGc频繁, 0老年代平稳,FGC很少。 年轻代太小了,请求量太大,创建了大量临时对象
  4. E年轻代正常,0老年代匀速上涨,不下降。FGC几小时一次,比较频繁。但是FGC后老年代会下降。S0/S1经常满。没有内存泄漏。就是很多对象生命周期都太长。
  5. 0老年代涨到一定程度就GC,FullGc有点频繁。FullGc后下降。堆区偏小,老年代偏小
  6. E年轻代没满,0老年代突然上涨

接口大量超时,cpu瞬间打满,一次超长的STW。十几秒后恢复。 日志出现Concurrent Mode fail 并发回收失败。同时使用jstat 看到老年代上涨较快。E年轻代上涨也较快,YGC后恢复。这就是老年代回收速度跟不上晋升速度,导致的并发回收失败。

http://www.jsqmd.com/news/468656/

相关文章:

  • ESP32-C6(支持 Wi-Fi 6)或 ESP32-H2 这两款和ESP32-S3的主要区别
  • 手持小型气象站:生活中的得力小助手!
  • 技术挑战盲盒
  • 腾讯版小龙虾安装体验
  • OPENCLAW连接飞书
  • STM32定时器- 核心区别:Prescaler vs. ClockDivision
  • 2026年3月上海铝艺铁艺装饰公司最新推荐榜单:铝艺围栏、庭院门、铸铝门、铝艺围栏护栏、铝艺庭院门、铝艺大门、庭院大门、铝艺围栏等领域选择指南 - 海棠依旧大
  • 搬家通知
  • Prompt、Agent、Skill、MCP、Claude Code 到底啥区别?
  • 也许是一些好题 6
  • 用MATLAB构建储能电站模型,平抑可再生能源功率波动
  • 一种基于元启发式算法的加权矩阵设计线性二次调节器控制器的新方法(用于四级倒立摆的动态非线性最优控制)
  • 【深度解析】沙发翻新上门服务:核心原理、应用场景与选型指南 - 速递信息
  • TikTok + 住宅 IP:2026 年社媒运营的绝佳搭档
  • 【网络安全入门】两个实用漏洞案例分析,收藏起来慢慢学
  • 如何实现科技成果与企业需求的精准对接?
  • RL | 速读 IJCAI 的强化学习论文
  • MATLAB插床导杆机构运动学动力学分析:包含Simulink模型、运动仿真及说明书
  • C#与Halcon联合编程实现视觉几何定位与测量框架:从入门到精通,支持圆ROI拟合、标定及模板管理
  • 程序员空窗期如何解决?
  • 《C++实战项目-高并发内存池》2.ObjectPool构造
  • 【OpenGL ES】在Android上手撕一个mini版的渲染框架
  • NOR Flash和NAND flash有什么区别
  • 拆解美团UV量提高的底层逻辑:从流量获取到留存的全链路优化
  • 三年独立开发,我从中学到什么?
  • KEIL5中文件中的字都是黑色的
  • python包发布流程
  • Android系统卡顿排查实战:当system_server卡在io_schedule(二)
  • 【OpenClaw】彻底卸载教程:告别残留,3步搞定(附一键脚本+检测工具)
  • 安静不下来?如何应对课堂注意力不集中与冲动行为调整策略