高手是怎么使用jstack精确找到异常代码的

 时间:2026-02-13 09:55:58

1、一个CPU密集型线程的demo:

package chapter1;

public class FindJavaThreadInTaskManager {    

    public static void main(String[] args) {        

            Thread thread = new Thread(new Worker());        

            thread.start();    

    }   

 static class Worker implements Runnable {        

        @Override        

        public void run() {            

            while (true) {                

                System.out.println("Thread Name:" + Thread.currentThread().getName());           

             }       

         }   

     }

}

高手是怎么使用jstack精确找到异常代码的

2、将上述代码打成Jar。

在Linux上执行上述代码

命令:

java -jar JavaStudy.jar

高手是怎么使用jstack精确找到异常代码的

3、找到CPU利用率持续比较高的进程,获取进程号,此处PID为3036

命令:

top

高手是怎么使用jstack精确找到异常代码的

4、找到上述进程中,CPU利用率比较高的线程号TID(十进制数),此处为3046

命令:

ps p 3036 -L -o pcpu,pid,tid,time,tname,cmd

高手是怎么使用jstack精确找到异常代码的

5、将获取的线程号(十进制数)转换成十六进制,此处为0xb46

命令:

printf "%x\n"  3046

高手是怎么使用jstack精确找到异常代码的

6、查看进程PID为3036中

nid为0xb46的线程信息。

命令:

jstack -l 3036

高手是怎么使用jstack精确找到异常代码的

7、总结:

可以看到jstack命令的输出结果是相当准确的:

显示耗CPU比较高的代码与实际情况相同,都是第13行。

放心的用吧。

Enjoy youself!

高手是怎么使用jstack精确找到异常代码的

  • 核桃露的日常做法?
  • 华硕思聪本X205笔记本u盘启动BIOS设置
  • 如何使您的Linux PC自动唤醒睡眠
  • 怎么做 咸汤圆
  • 羊血炒青菜的做法
  • 热门搜索
    安全方面的手抄报 校园是我家手抄报 绿色环保手抄报资料 关于爱的手抄报图片 道德手抄报 安全与健康手抄报内容 小学四年级手抄报大全 安全法制手抄报 美德少年手抄报资料 城南旧事手抄报图片