java 线程cpu占用_【转】一次java系统线程占用CPU过高问题的解决

1、下载Windows系统和应用程序监视工具Process Explorer

2、打开ProcessExplorer,找到cpu占用高的java.exe,记下进程编号PID,比如当前是9520

8f39f293b90cfda7f1512ad37609e7f8.png

3、双击java.exe进程,打开查看CPU占用高的线程,记下线程编号TID,比如当前19600,转成16进制为4C90

4f4b1e2b94f9be003ca3f971fe974779.png

4、使用的java的jstack工具

打开doc命令行,执行命令:jstack -l 9520 >> D:\\jstack.txt

打开D盘下的jstack.txt文件,搜索16进制的线程编号4C90,找到后就可定位到有问题的代码。

3284b0d7457e37774ce5dcedfcc87f2f.png

5、linux系统下查找java占cpu高的线程

1,使用top 命令动态的展示占用前几的进程PID, CPU消耗, TIME, RES 等信息,然后找到CPU占用最高的PID。

2 , top -Hp  19600(pid)  显示PID进程消耗的线程各个情况。着到一个认为TIME最长的线程的PID,将PID转成16进制4C90,例如:

printf "%x\n" 19600(PID)。

3、使用jstack工具定位问题的原因 ./jstatck -l 9520 | grep 4C90  -A 80 。

说明:-A 80 是关键字后的80行代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值