> jstack java进程号
一、查看死循环
第一种方法(高效找出对应的线程):top+线程堆栈方法
1、jps找出java对应的进程号
2、top -p 进程号,展示这个java进程对应的所有线程号
3、shift+h,对所有线程进程CPU使用率排序
4、pid=30712,即为消耗cpu最多的线程,可能死循环
5、jstack+进程号,找到nid=30712的线程号,看看这个线程是干嘛的,具体代码是什么
第二种方法:
间隔一段时间多次打印jstack日志,发现同一个线程一直在执行,我们认为此线程阻塞或者是死循环
二、死锁,jstack 进程号,如果有死锁情况,会直接显示死锁deadlock
三、阻塞:大量线程等待同一个资源
1、并发高,连接池配置太少
2、频繁打印日志,等待IO操作