利用Linux命令和JDK命令一块查
第一、先用top命令找出CPU占比最高的
第二、ps -ef或者jps进一步定位,得知是怎么用哪个的一个后台程序在不断占用CPU
两种命令都找出是5101这个进程编号
第三、定位到具体的线程或者代码
命令:ps -mp 进程 -o THREAD,tid,time
参数解释:
-m 显示所有的线程
-p pid 进程使用cpu的时间
-o 该参数是用户自定义格式
扫描二维码关注公众号,回复:
12580759 查看本文章
进一步定位到了5102这个线程有问题。
第四步、将需要的线程ID转换为16进制格式(英文小写格式)
因为线程在内存里面跑是16进制的
格式:printf "%x\n" 有问题的线程ID
5102的16进制为13ee。
第五步、jstack 进程ID | grep tid(16进制线程ID小写英文) -A60
这个时候定位到是com.atguigu.test.JavaDemo02这个类里面的第10行代码有问题。