java无响应堆栈信息排查

本文详细介绍如何使用jstack、jdb及jstat等工具诊断Java应用程序的性能问题,包括获取进程线程信息、查看线程状态、分析内存使用情况以及监控CPU占用率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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      已退出的。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小钻风巡山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值