记一次线上cpu占用率爆炸的事故! 完整FullGC、大对象排查一条龙!

线程篇——使用 jstack 分析问题

先看下线程zhuangt

# jstack 会尝试生成进程 ID 为 <pid>. 的 Java 进程的线程转储文件,并包含锁信息(-l 选项)
 jstack -l <pid>.

在这里插入图片描述
可以看到垃圾回收期的线程很活跃~


GC篇——jstat

看看gc的情况

# 将每2秒输出一次垃圾回收相关的数据,共输出5次
jstat -gc 1 2000 5

在这里插入图片描述

字段说明

字段含义
S0CSurvivor 0 区的总容量(KB)
S1CSurvivor 1 区的总容量(KB)
S0USurvivor 0 区已使用的容量(KB)
S1USurvivor 1 区已使用的容量(KB)
ECEden 区的总容量(KB)
EUEden 区已使用的容量(KB)
OC老年代的总容量(KB)
OU老年代已使用的容量(KB)
MC元空间的总容量(KB)
MU元空间已使用的容量(KB)
CCSC压缩类空间的总容量(KB)
CCSU压缩类空间已使用的容量(KB)
YGC年轻代 GC 次数
YGCT年轻代 GC 总时间(秒)
FGCFull GC 次数
FGCTFull GC 总时间(秒)
CGC并发 GC 次数
CGCT并发 GC 总时间(秒)
GCT所有 GC 的总时间(秒)

直接发现问题

  • FGC 为 1868,Full GC 发生了 1868 次。
  • FGCT 为 5360.070 秒,Full GC 总时间为 5360.070 秒。

FGC 为 1868,Full GC 次数过多,说明老年代空间不足或存在内存泄漏

对象篇——jmap

打印大对象看看

jmap -histo:live <pid> > heap-histo.txt

在这里插入图片描述

生成堆转储文件

jmap -dump:live,format=b,file=heapdump.hprof <pid>

JProfiler分析

在这里插入图片描述
在这里插入图片描述
这里其实我已经发现了我们内存泄露的问题~

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值