使用jstack、jmap命令分析线程状态
1、top
查看各个进程cpu使用情况
2、top -Hp 80123
查看该进程下各个线程的cpu使用情况
-H:显示线程信息 -p:指定PID
3、jstack -l 80215 > /home/logs/jstack.txt
输出到文件
4、printf "%x" 80215
可将线程ID 十进制转为16进制
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回收了哪些对象。