线程运行诊断
案例1:cpu占用过多
定位:
1. 用top定位哪个进程堆cpu的占用过高
2. ps H -eo pid,tid,%cpu | grep 进程id(此处查看哪个线程占用)
3. jstack 进程id(此处通过上一步的线程id转换为16进制,对比nid就可以知道哪行代码了)
案例2:程序运行很长的时间没有结果
定位:
1. 死锁排查可通过 top | grep java 查看重复出现的进程,可以定位
2. jstack 进程id
案例3:内存占用过多
定位:
1、用top定位哪个进程占用内存消耗过大
命令: top -c -b -o +%MEM | head -n 20 | tail -15