首先我们来认识一些Linux命令:
ps : 查看进程的PID号;
top -p + PID号 :查看指定PID进程的资源使用情况;
top -Hp + PID号 :查看指定PID进程里面所有线程的调用栈信息
jstack + 进程PID号: 输出当前Java进程所有线程的调用栈信息;
进行定位:
- 使用top命令查看占用资源最高的是哪个进程,记录它的PID号;
- 使用 top -Hp + PID号打印该进程的线程占用资源情况,记录该线程的PID号并转换为十六进制;
- jps命令找寻对应的进程号是哪个具体java类,使用 jstack + 进程PID打印进程堆栈信息,找到我们之前记录的线程ID对应的十六进制的位置,并找到相应的java类中对应的位置解决资源占用率过高问题;
end~