如何找出JAVA应用中占用CPU的代码

2025-10-01 05:48:10

1、作为应用服务器,我们一般都是在linux环境下进行相关业务的部署。我们首先通过linux下的系统命令top获取当前占用CPU资源较多的进程,找到对应的进程pid。

如何找出JAVA应用中占用CPU的代码

2、通过命令:top -Hp pid,查看该进程下各线程占用资源情况,和上一个步骤一样,找到占用资源较多的线程pid

如何找出JAVA应用中占用CPU的代码

3、因为在jvm堆栈信息中线程pid是以十六进制展示的,所以将线程pid转换为十六进制,在linux终端下通过如下命令就可完成转换:

printf ‘%x\n’25077

4、接下来我们通过:jstack 进程pid来打印出jvm中的堆栈信息,并找到对应线程的堆栈信息。这里的nid就是线程pid。

如何找出JAVA应用中占用CPU的代码

如何找出JAVA应用中占用CPU的代码

5、对线程状态进行分析。线程状态如下所示:

1)  死锁,Deadlock(重点关注)

2)  执行中,Runnable  

3)  等待资源,Waiting on condition(重点关注,等待什么资源)

4)  等待获取监视器,Waiting on monitor entry(重点关注)

5)  暂停,Suspended

6)  对象等待中,Object.wait() 或 TIMED_WAITING

7)  阻塞,Blocked(重点关注) 

8)  停止,Parked

如何找出JAVA应用中占用CPU的代码

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢