<返回更多

怎么定位java中哪个线程大量占用CPU

2021-03-18    
加入收藏

如果一个线程一直占有着CPU的大量资源,那么一定会导致程序变卡,甚至整个计算机都会卡。那么我们怎么定位到这个线程呢?

接下来我们以linux系统来演示:

1、top命令:检测到你后台进程占用CPU使用和内存的占用情况。

怎么定位java中哪个线程大量占用CPU

每个进程CPU占用的情况

从结果中我们可以看到第一条结果占用了99.3%的CPU,它的进程(PID)是32655。但是top命令只能定位到进程占用的CPU,不能定位到是哪个具体的线程。

所以我们可以根据PID来获取里面所有的线程占用CPU的情况:

ps H -eo pid , tid, %cpu | grep 32665

2、获取进程里面占用CPU最高的线程(ps H -eo pid , tid, %cpu | grep 32665)

怎么定位java中哪个线程大量占用CPU

查看32665进程里面所有线程占用CPU的情况

3、通过 jstack 32655(进程ID),获取里面每个线程的具体信息:

怎么定位java中哪个线程大量占用CPU

jstack 32655:获取进程里面具体线程信息

4、最后一步jstack里面的线程编号是16进制的,所以我们把(ps H -eo pid , tid, %cpu | grep 32665)里面获取的线程编号先进行16进制的换算,然后拿到换算后的值,跟上图的线程编号进行对比,并找到具体的那个线程。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>