JAVA 进程CPU过高排查

1. top命令看一下JAVA进程:

 占用500%多,非常恐怖,程序卡得动不了了。

2. 使用命令top -H -p PID 此处PID就是上一步获取的进程PID,我的PID是13342,通过此命令可以查看实际占用CPU最高的的线程的ID,此处几位TID

3.获取对应线程的线程栈信息

  • 使用命令printf "%x\n" tid,将线程ID转换为16进制

printf "%x\n" 13345

 

 使用命令jstack PID(进程pid) |grep tid(线程pid16进制) -A 50,此处tid为上一步转换后的16进制,使用此命令可以查看到对应线程的线程栈信息,从对根据线程栈对对应的代码进行分析

jstack 13342|grep 3421 -A 50  看到异常信息:

或者将近信息直接输到根目录的这个文件下面:

jstack -l 13342 >> jstackLog.out

使用 命令打开文件查看异常信息:

more jstackLog.out

可以按回车往下滚动

可以看到错误类信息:

 最后就是代码上优化了,我这边是导出数据太大,循环创建对象导致的错误。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值