Windows如何使用jstack跟踪异常代码
1、先写一段代码来模拟一个耗CPU的线程
代码:
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());
}
}
}
}

2、执行上述代码,
模拟一个CPU和IO利用率都高线程

3、打开任务管理,
此例中,CPU利用率比较高java进程ID为7064

4、使用ProcessExplorer找到ID号为7064的进程

5、使用ProcessExplorer查看进程ID为7064的属性信息
在Thread标签找到CPU利用率的线程信息,TID为6120(10进制)


6、将CPU利用率高的线程ID 6120(10进制)
转换为0x17E8(16进制)


7、使用jstack查看进程7064的线程信息。
找到线程号为0x17E8的线程
命令:
jstack -l 7064

8、查看第13行的代码信息,与实际情况相符。
至此,找到引发CPU利用率高的代码
