今天看同事诊断一java进程CPU高的问题,特此记录下方法:
1.通过ps命令查看具体哪个线程CPU高
ps -mp [pid] -o THREAD,tid,time
2.jstack -l
通过jstack查找对应线程ID,看在执行哪块逻辑。 接着对应代码分析。。。
如果是c++程序怎么定位呢?参考别人的方法
1.使用find /proc/pid/task/ -name "sched" | xargs grep threads获取对应任务的tid
2.使用gdb -batch -ex "bt" -p pid 获取对应线程的调用栈