高手怎么查找CPU过高的Java代码。具体到行

1.首先写一个测试用例;

public class Main {

    public static void main(String[] args) {
        System.out.println("Hello World!");
        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());

            }

        }

    }
}

2.然后打包成jar包,打包过程省略。。

java -jar 项目名

 3.利用top命令找到pid  

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

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


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

printf "%x\n"  3046

6.查看进程PID为3036中  nid为0xb46的线程信息

jstack -l 3036|more

posted @ 2020-08-27 18:12  牧码人hhom  阅读(379)  评论(0编辑  收藏  举报