JVM调优之jstack找出最耗cpu的线程并定位代码

jstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码,所以它在JVM性能调优中使用得非常多。

第一步:top命令找出占用cpu最大的PID为9306


第二步:使用top -Hp 9306 输出如下:找出占用资源的线程号10294


TIME列就是各个Java线程耗费的CPU时间,CPU时间最长的是线程ID为10294的线程,用

printf"%x\n" 10294

得到10294的十六进制值为54ee,下面会用到。

OK,下一步终于轮到jstack上场了,它用来输出进程10294的堆栈信息,然后根据线程ID的十六进制值grep,如下:

root@ubuntu:/# jstack9306 | grep -A 100 54ee //输出搜索结果的近100行,锁定耗费资源的代码位置


你可能感兴趣的:(JVM调优之jstack找出最耗cpu的线程并定位代码)