本文主要整理和介绍Java中,在linux下所用到的相关查询方法。
top 命令 | ps 命令
找出该进程内最耗费CPU的线程:可以使用ps -Lfp pid或者ps -mp pid -o THREAD, tid, time或者top -Hp pid
下面我们来一个实例找出某个Java进程中最耗费CPU的Java线程并定位堆栈信息,用到的命令有ps、top、printf、jstack、grep。
top -Hp [pid] ps huH p {PID} | wc -l
TIME列就是各个Java线程耗费的CPU时间,CPU时间最长的是线程ID为21553的线程,用
printf "%x\n" 21553
得到21553的十六进制值为5431,下面会用到。
OK,下一步终于轮到jstack上场了,它用来输出进程21251的堆栈信息,然后根据线程ID的十六进制值grep,如下:
jstack 21251 | grep 5431
可以看到CPU消耗在com.wzc.manage.meta.vehicle.listener.DeviceOnlineMsgListener-1这个类的Object.wait(),就可以定位到改段代码。
原文:https://www.cnblogs.com/huanghzm/p/11129207.html