linux环境下cpu占用久居高位不下怎么办(java线程原因)?

前言:这是在学习哔哩哔哩上黑马的jvm教学中看到的一道题,在此做个记录

贴上视频连接:黑马程序员JVM完整教程,全网超高评价,全程干货不拖沓_哔哩哔哩_bilibili

第一步:通过top命令找出占用cpu较多的进程id

第二步:通过ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu  | grep 进程id     指令查看进程中线程占用cpu较高的线程id

 

第三步:通过jdk自带的工具jstack来查找线程运行情况   指令:jstack 进程id

就会将进程中的线程都列举出来,其中如图所示thread1、2、3都是用户定义的线程,根据前面找出的线程id 32655(通过ps查看到的线程id是十进制的,要先转换成16进制,然后再回到jstack中查找

 经过计算得出32665的16进制为7F99,然后再下图中找到线程号为7f99的线程为thread1,找到正执行的代码,再第8行,接下来就可以回到java源代码中去查看代码是否有问题

 

猜你喜欢

转载自blog.csdn.net/Promise_J_Z/article/details/121379275