①通过 top 命令找到占用cpu最高的 pid[进程id]
定位到pid是 1469
②通过 top -Hp pid 查看进程中占用cpu过高的 tid[线程id]
③通过 printf ‘%x/n’ tid 把线程id转化为十六进制
④通过 jstack pid | grep tid -A 30 定位线程堆栈信息
根据线程信息排查对应业务代码进行问题定位。
通过 jstat -gcutil pid 时间间隔 查看 gc 信息
可以发现伊甸园区和老年代都已经满了,且进行了大量的FGC
指标介绍
S0:年轻代第一个幸存区(survivor)使用容量占用百分比
S1:年轻代第二个幸存区(survivor)使用容量占用百分比
E:年轻代伊甸园区(eden)使用容量占用百分比
O:老年代使用容量占用百分比
P:perm代使用容量占用百分比
YGC:从应用程序启动到当前采样时年轻代gc的次数
YGCT:从应用程序启动到当前采样时年轻代gc的时间
FGC:从应用程序启动到当前采样时老年代gc的次数
FGCT:从应用程序启动到当前采样时老年代gc的时间
GCT:从应用程序启动到当前采样时gc总耗时
导出dump文