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

2025-05-24 06:23:16

1、一稍僚敉视个CPU密集型线程的demo:package chapter1;public class FindJavaThreadInTaskManager { public stati艘早祓胂c 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 -l3036

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

7、总结:可以看到jstac氯短赤亻k命令的输出结果是相当准确的:显示耗CPU比较高的代码与实际情况相同,都是第13行。放心的用吧。Enjoy youself!

高手是怎么使用jstack精确找到异常代码的
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢