使用jstack、jmap命令分析线程状态

1、top查看各个进程cpu使用情况
使用jstack、jmap命令分析线程状态

2、top -Hp 80123 查看该进程下各个线程的cpu使用情况
-H:显示线程信息 -p:指定PID
使用jstack、jmap命令分析线程状态

3、jstack -l 80215 > /home/logs/jstack.txt 输出到文件

4、printf "%x" 80215 可将线程ID 十进制转为16进制
使用jstack、jmap命令分析线程状态

使用jstack、jmap命令分析线程状态

5、dump文件里,值得关注的线程状态
Deadlock:死锁,重点关注。
Runnable:执行中。
Waiting on condition:等待资源,重点关注。
Waiting on monitor entry:等待获取监视器,重点关注。
Suspended:暂停。
TIMED_WAITING:对象等待中。
Blocked:阻塞,重点关注。
Parked:停止。

6、jmap -histo 80215 > /home/logs/jmap.txt 打印每个class的实例数目,内存占用,类全名信息。在一段时间后再次打印,使用文本对比工具,可以对比出GC回收了哪些对象。