1. top查看CPU占用情况
# 使用top指令
top
注:
- shft+p按照cpu占用进行排序,按shift+m按照内存占用进行排序
如图:
2. 定位该进程的线程信息
top -Hp PID
如:
top -Hp 10255
解析:
top
:是一个实时的系统监视工具,用于显示系统中各个进程的资源占用情况。-H
:是top
命令的选项之一,用于显示线程信息。-p 10255
:是top
命令的另一个选项,用于指定要监视的进程的 PID。因此,这个命令的含义是显示进程号为 10255 的进程的所有线程的实时资源占用情况。
如图:
3. 使用jstack定位代码
a. 线程号转换为16进制
printf "%x\n" 10289
如:
b. 获取线程快照
jstack -l 进程ID > ./jstack_result.txt
如:
jstack -l 10255 > ./jstack_result.txt
c. 根据线程号定位具体代码
cat jstack_result.txt |grep -A 100 2831
d. 简单的汇总指令,不用导出处文件,直接控制台查看
jstack <pid> |grep -A 200 <nid>
如:
jstack 10255 |grep -A 200 2831
解析:
这个命令是在 Linux 中使用
jstack
工具打印 Java 进程的线程堆栈信息,并通过grep
过滤出特定线程的堆栈信息及其后的200行信息。具体含义如下:
jstack <pid>
:是用于打印指定 Java 进程的线程堆栈信息的命令,<pid>
是要查看的 Java 进程的进程号。|
:是管道符号,用于将前一个命令的输出作为后一个命令的输入。grep -A 200 <nid>
:是grep
命令的选项之一,用于在输入中查找匹配的行,并显示匹配行及其后的200行信息。<nid>
是要匹配的线程 ID。因此,这个命令的含义是打印 Java 进程中指定线程的堆栈信息,并显示该线程的堆栈信息及其后的200行信息。