java无响应堆栈信息排查
1.先找到程序的进程id
2.获取进程的线程
jstack -F 18176
这个程序没有被锁死的线程,上图信息中会写哪一个线程被锁死了
3 使用jdb连接JVM查看线程情况
jdb -connect sun.jvm.hotspot.jdi.SAPIDAttachingConnector:pid=18176
4.查看线程列表
5.获取某一个线程的堆栈信息
这样能看见某一个线程的代码执行情况
java 查看内存信息shell
jstat -gcutil 18176
查看某进程下所有线程使用cpu的列表
pidstat -p < PID > 1 3 -u -t
找到cpu较高的线程id 29900 10进制转化为16进制为 74CC
查看线程74CC的堆栈信息输出到当前目录stack.log文件中
jstack pid > stack.log
线程的状态:
NEW 未启动的。不会出现在Dump中。
RUNNABLE 在虚拟机内执行的。
BLOCKED 受阻塞并等待监视器锁。
WATING 无限期等待另一个线程执行特定操作。
TIMED_WATING 有时限的等待另一个线程的特定操作。
TERMINATED 已退出的。