1、cpu過高是那個程序造成的?使用top命令
2、更具PID來查看具體是那個進程下對應的線程造成,及通過進程來確定cpu過高的線程tid。
命令:Ps -mp pid -o THREAD,tid,time
3、因爲線程的id都是16進制的需要將10進制轉換成16進制,
方法:1、直接使用計算器
方法:2、使用命令
得到結果:得到這三個數的16進製爲別爲3ec4,3ec5,3ec7
4、jstack查看進程信息然後利用grep來過濾對應的線程id信息。
通過jstack -pid |grep tid 查詢/或者直接使用 jstack -pid |grep tid -A60(顯示前60行)
從這裏能看出,這3個線程目前還處於運行狀態的
再通過jstack查看詳細點的信息
剩下2個圖就省略了