Jstack 查看线程状态及定位占用 cpu 较高的 java 线程
本文为博主原创,未经允许不得转载:
1. Jstack 用来查看 java 指定进程所包含的 java 线程状态:
"arthas-NettyHttpTelnetBootstrap-3-3" 线程名
prio=5 优先级=5
tid=0x00007f6a60019000 线程id
nid=0x1f4b 线程对应的本地线程标识nid
java.lang.Thread.State: RUNNABLE 线程状态
2.使用 Jstack 定位最消耗 cpu 的线程
2.1 使用命令top -p <pid> ,显示你的java进程的内存情况,pid是java进程号,
2.2 按H,获取每个线程的内存情况
2.3 找到内存和cpu占用最高的线程tid :19113,并使用 printf "%x\n" 转为16进制
2.4 使用 jstack 查看该进程对应线程执行的堆栈信息
2.5 根据堆栈信息定位消耗 cpu 的原因