1. 找到cpu占用最高的进程id
通过top命令查看占用最高的进程id
2. 定位到对应java程序
ps -ef | grep 进程pid(或者 jps -l | grep 进程pid)
3. 定位到相关进程的线程tid
top -Hp 进程pid(或ps -mp 进程pid -o THREAD,tid,time)
4. 根据tid得到16进制的线程id
输入命令printf "%x\n" 线程tid获取16进制的线程id以便于快捷定位代码问题
5. 通过jstack定位具体代码
jstack 进程id | grep 16进制的tid
jstack 进程id | grep 16进制的tid -A60
-A60是打印前面60行堆栈信息,-B60表示打印后面60行堆栈信息,-C60表示打印前后各60行堆栈信息