美文网首页
java项目cpu或内存过高,排查问题思路

java项目cpu或内存过高,排查问题思路

作者: 灵台悠步 | 来源:发表于2024-04-01 00:02 被阅读0次

一、cpu过高

1、通过top命令,定位进程ID

通过top命令,查看CPU使用率最高得进程ID,记为@pid

2、通过韩参数得top查看cpu过高线程

命令top -H -p [@pid],记录结果得pid值,记为@tpid

3、通过printf 打印上述值得十六进制

命令printf 'ox%x\n' [@tpid],记录结果为@tid

4、jstack命令查看线性具体信息

命令jstack [@pid] | grep [@tid],可以查看线程具体信息,再进行详细定位

二、内存过高

1、top查看较高得进程

top命令可以查看cpu,内存等信息,记录进程ID为@pid

2、jstat查看垃圾回收情况

命令jstat -gc [@pid] 1000 查看GC情况,1000表示1秒刷新一次

S0C:第一个幸存区的大小,单位KB。
S1C:第二个幸存区的大小。
S0U:第一个幸存区的使用大小。
S1U:第二个幸存区的使用大小。
EC:伊甸园区的大小。
EU:伊甸园区的使用大小。
OC:老年代大小。
OU:老年代使用大小。
MC:方法区大小(元空间)。
MU:方法区使用大小。
CCSC:压缩类空间大小。
CCSU:压缩类空间使用大小。
YGC:年轻代垃圾回收次数。
YGCT:年轻代垃圾回收消耗时间,单位s。
FGC:老年代垃圾回收次数。
FGCT:老年代垃圾回收消耗时间,单位s。
GCT:垃圾回收消耗总时间,单位s。

如果gc频繁,每次回收内存空间也正常,那么说明是因为对象创建过快导致内存一直占用很高;如果每次回收的内存非常少,那么有可能是因为内存泄漏导致内存一直无法被回收。

3、jmap查看对象占用内存情况

命令jmap -histo [@pid] | head 20查看前20个大对象

4、jmap到处dump文件

如果第三步查不出来,可以将dump文件导出,并通过visualVM 工具打开分析,命令jmap -dump:live,file=/home/my.hprof导出dump文件

相关文章

网友评论

      本文标题:java项目cpu或内存过高,排查问题思路

      本文链接:https://www.haomeiwen.com/subject/zdubtjtx.html