在 Ubuntu 上查看 Java 进程中的线程,常用方法如下,按“从简单到专业”给你整理:
jps -l
示例输出:
12345 com.example.MyApp
jstack 12345
或输出到文件:
jstack 12345 > thread_dump.txt
可以看到:
main、pool-1-thread-1)RUNNABLE、BLOCKED、WAITING)ps -eLf | grep 12345 | wc -l
或:
cat /proc/12345/status | grep Threads
ps -T -p 12345
字段说明:
PID:进程IDSPID:线程ID(LWP)top -H -p 12345
-H:显示线程htop
F2 → 设置显示线程当发现某个 LWP 线程 CPU 高 时:
top -H -p 12345
printf "%x\n" 12346
例如:
303a
jstack 12345 | grep -A 20 303a
就能定位到 具体 Java 线程在干什么
如果有桌面或 X11:
jconsole
或
jvisualvm
可实时查看:
top -H -p PIDjstack 定位代码jstack PID | grep -i deadlock
watch -n 1 "cat /proc/PID/status | grep Threads"
如果你愿意,可以告诉我:
我可以给你更精确的命令。