jstack 是一个非常有用的命令行工具,它属于 Java Development Kit (JDK) 的一部分,主要用于生成 Java 应用程序的线程转储。线程转储是一种诊断工具,它可以显示 Java 应用程序中的所有线程在某一时刻的详细执行信息,包括线程堆栈帧和锁的信息。这对于分析和解决死锁、监视和性能问题非常有帮助
1、使用下面命令格式化打印正在运行的java应用,获取目标应用的进程号PID
ps -ef | grep java | awk ‘{printf “User: %s, PID: %s, Command: %s\n”, $1, $2, $8}’
2、使用下面命令生成堆栈转储文件
jstack -l > thread_dump.dump
3、使用文件解析工具打开上面的转储文件,工具jca4614.jar(可以找其他的工具也行)
java -jar jca4612.jar