常用的 JVM 性能调优监控工具,太强大了( 八 )

B、 jstack

jstack主要用来查看某个Java进程内的线程堆栈信息 。 语法格式如下:

命令行参数选项说明如下:

jstack可以定位到线程堆栈 , 根据堆栈信息我们可以定位到具体代码 , 所以它在JVM性能调优中使用得非常多 。 下面我们来一个实例找出某个Java进程中最耗费CPU的Java线程并定位堆栈信息 , 用到的命令有ps、top、printf、jstack、grep 。

第一步先找出Java进程ID , 我部署在服务器上的Java应用名称为mrf-center:

得到进程ID为21711 , 第二步找出该进程内最耗费CPU的线程 , 可以使用ps -Lfp pid或者ps -mp pid -o THREAD tid time或者top -Hp pid , 我这里用第三个 , 输出如下:

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

推荐阅读