Linux -- 定位Java进程占用系统资源使用率高的问题(CPU和内存使用率)

首先我们来认识一些Linux命令
ps : 查看进程的PID号;
top -p + PID号 :查看指定PID进程的资源使用情况;
top -Hp + PID号 :查看指定PID进程里面所有线程的调用栈信息
jstack + 进程PID号: 输出当前Java进程所有线程的调用栈信息;

进行定位

  • 使用top命令查看占用资源最高的是哪个进程,记录它的PID号;
    Linux -- 定位Java进程占用系统资源使用率高的问题(CPU和内存使用率)_第1张图片
  • 使用 top -Hp + PID号打印该进程的线程占用资源情况,记录该线程的PID号并转换为十六进制;
    Linux -- 定位Java进程占用系统资源使用率高的问题(CPU和内存使用率)_第2张图片Linux -- 定位Java进程占用系统资源使用率高的问题(CPU和内存使用率)_第3张图片
  • jps命令找寻对应的进程号是哪个具体java类,使用 jstack + 进程PID打印进程堆栈信息,找到我们之前记录的线程ID对应的十六进制的位置,并找到相应的java类中对应的位置解决资源占用率过高问题
    在这里插入图片描述Linux -- 定位Java进程占用系统资源使用率高的问题(CPU和内存使用率)_第4张图片
    Linux -- 定位Java进程占用系统资源使用率高的问题(CPU和内存使用率)_第5张图片
    end~

你可能感兴趣的:(Java,Linux)