jstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码,所以它在JVM性能调优中使用得非常多。
1、 压测时,使用top命令查看哪个java进行占用了较多的CPU资源:
上图中可以看出pid为9437的java进程占用了较多的cpu资源
2、通过top -Hp 9437可以查看该进程下各个线程的CPU使用情况
上图中可以看出pid为9591的java线程占用了较多的cpu资源
Time列就是各个java线程耗费cpu的时间。
3、 将线程转换为16进制后,查看线程日志
在线转16进制:http://tool.oschina.net/hexconvert
Linux下查看线程日志:
jstack 进行数 | grep -A 10 线程16进制
由于查看的改线程查不到日志,补充一个能查到日志的线程。应该上述的流程