Linux 定位消耗CPU最高的线程

【一】前期准备

1.类文件准备

public class DeadCirclw {
    public static void main(String[] args) {
        while (true){
            System.out.println(System.currentTimeMillis());
        }
    }
}

2.类文件执行
java -jar practice.jar (ps:idea如何打jar包->)
在这里插入图片描述

【二】中期执行

1.将刚刚的文件放到linux服务器(我用VMware搭建的ubantu虚机,将本机E盘进行共享)上

cp /mnt/hgfs/E/zip/practice.jar /jar

cp:copy 即复制意思,/mnt/hgfs/E/zip是共享文件夹路径 最后的/jar是我在ubantu上创建的用来放jar的文件夹

2.jar文件未启动前CPU情况
在这里插入图片描述
最高的不过9.6%
3.启动带死循环的jar文件后的CPU使用情况
3.1 启动命令:

nohup java -jar practice.jar &

为什么使用nohup?
常见的 java -jar启动后,一旦切换窗口程序就停止运行
使用nohup(不挂断执行命令) + &(后台运行) 规避掉
3.2 启动后
在这里插入图片描述
CPU已经飙升到97%,几乎占满CPU。

【三】定位线程

1.查看进程下的线程信息:
在这里插入图片描述
PID:process ID 进程ID(系统是由多个进程运行服务,进程中包含多个线程具体执行任务)
要让top输某特定进程并检查该进程内运行线程状况:

top -H -p 4376

命令解释:查看进程号为4376中具体的线程信息此时PID可看作线程号(线程信息见下图)。
在这里插入图片描述
2.10进制转16进制:
在这里插入图片描述
注意点:引号是英文状态下的,0x%x代表转换为16进制 \n代表换行

3.查看具体线程信息
在这里插入图片描述

  • 图中最上一行:jstack 4376|grep 111c -A100 查看进程4376下面的111c线程的100行信息

  • 图中最下一行:说明了死循环的位置

到此结束。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值