1.先找到程序的进程id 

java无响应堆栈信息排查

2.获取进程的线程

jstack -F 18176

java无响应堆栈信息排查

 

 

这个程序没有被锁死的线程,上图信息中会写哪一个线程被锁死了

3 使用jdb连接JVM查看线程情况

jdb -connect sun.jvm.hotspot.jdi.SAPIDAttachingConnector:pid=18176

java无响应堆栈信息排查

4.查看线程列表

java无响应堆栈信息排查

5.获取某一个线程的堆栈信息

java无响应堆栈信息排查

 这样能看见某一个线程的代码执行情况

 

 

java 查看内存信息shell

jstat -gcutil  18176

java无响应堆栈信息排查

 

java无响应堆栈信息排查

 

 

查看某进程下所有线程使用cpu的列表

pidstat -p < PID > 1 3 -u -t

java无响应堆栈信息排查

找到cpu较高的线程id 29900 10进制转化为16进制为 74CC

查看线程74CC的堆栈信息输出到当前目录stack.log文件中

jstack pid > stack.log

 

 

线程的状态:
NEW                     未启动的。不会出现在Dump中。
RUNNABLE          在虚拟机内执行的。
BLOCKED            受阻塞并等待监视器锁。
WATING               无限期等待另一个线程执行特定操作。
TIMED_WATING  有时限的等待另一个线程的特定操作。
TERMINATED      已退出的。

 

java无响应堆栈信息排查

 

相关文章:

  • 2022-01-13
  • 2021-11-20
  • 2021-11-21
  • 2021-08-25
  • 2021-08-15
  • 2021-11-19
  • 2021-09-30
  • 2022-01-08
猜你喜欢
  • 2021-05-15
  • 2021-12-09
  • 2021-06-02
  • 2021-11-21
  • 2021-06-24
  • 2022-01-04
相关资源
相似解决方案