JAVA 占用 CPU 过高,分析方法

1、top 命令查看 java 进程

top

2、根据进程号找到CPU占用高的线程

top -H -p pid

3、将需要的线程ID转换为16进制格式

printf "%x\n" tid

4、打印线程的堆栈信息

# 把结果输出文件
jstack -l pid > jstack.log


# 把 tid 转成16进制
jstack pid | grep $(printf "%x\n" tid) -A 30

5、垃圾回收

# 要查看一个java进程的垃圾收集器信息,可使用jstat -gc 进程id 每隔多少毫秒 一共输出多少次
jstat -gc 16430 1000 3


# 显示
S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT   
27136.0 28160.0 10035.9  0.0   1296896.0 315562.0 1615872.0   254809.4  173312.0 156322.4 19200.0 16586.9    852   26.639  23     20.432   47.071
27136.0 28160.0 10035.9  0.0   1296896.0 338106.9 1615872.0   254809.4  173312.0 156322.4 19200.0 16586.9    852   26.639  23     20.432   47.071
27136.0 28160.0 10035.9  0.0   1296896.0 343821.8 1615872.0   254809.4  173312.0 156322.4 19200.0 16586.9    852   26.639  23     20.432   47.071

S0C 年轻代中第一个survivor(幸存区)的容量 (字节) 
S0U 年轻代中第一个survivor(幸存区)目前已使用空间 (字节) 
EC、EU:Eden区容量和使用量
OC、OU:年老代容量和使用量
MC、MU:元空间容量和使用量
YGC、YGT:年轻代GC次数和GC耗时(秒)
FGC、FGCT:Full GC次数和Full GC耗时(秒)
GCT:GC总耗时(秒)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值