今天看同事診斷一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 獲取對應線程的調用棧