高手怎么查找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