我们在linux服务器上运行java程序时,容易出现cpu占比很高的情况,所以,这往往是由于某个线程导致的cpu过高负载,
下面就介绍如何从linux的终端中定位出cpu高德线程,并打印堆栈信息,解决问题。
具体操作流程如下:
1、jps -v列出所有的java进程 , top找出cpu占用过高的对应的java 进程pid
2、使用top -H -p PID 命令查看对应进程里的哪个线程占用CPU过高,取该线程pid
3、将线程的pid 转成16进制
4、jstack [进程pid]|grep -A 100 [线程pid的16进制] dump出jvm该线程的后100行,或者整个输出到文件
jstack -l pid > xxxfil