在 Java 中获取线程转储(Thread Dump)是诊断多线程问题(如死锁、线程阻塞等)的关键手段,以下是常用方法及注意事项:
一、命令行工具获取
-
jstack
工具
JDK 自带的命令行工具,直接输出线程堆栈信息到控制台或文件:jstack -l <PID> > thread_dump.txt # 输出到文件
<PID>
可通过jps -l
或ps -ef | grep java
获取。
-
信号触发
- Unix/Linux:发送
SIGQUIT
信号(kill -3 <PID>
),转储输出到应用的标准输出或日志文件。 - Windows:按
Ctrl + Break
键(控制台运行)。
- Unix/Linux:发送
-
jcmd