java linux cpu佔用過高

  1. top 查看各項使用情況(只能看到進程id)

  2. ps H -eo pid,tid,%cpu 命令查看 進程id 線程id cpu佔用情況(找到線程佔用過高的進程id)

  3. ps H -eo pid,tid,%cpu | grep xxx(進程id)篩選

    ps H -eo pid,tid,%cpu | grep 32665
  4. jstack xxx(進程id) 查看進程的所有線程 


    打印的是每個線程的信息,將線程id(上面命令找到的tid 32665)由十進制轉換爲十六進制,找到nid=0x7f99(32665轉換得0x7f99)的線程


    上圖提示:線程thread1 正在運行,且問題位置爲 Demo1_16.java 的第8行,找到位置就可以解決問題了。


    上圖示例爲死循環代碼。 實際項目中可能是其他代碼。

     
  5. 如果是gc問題 可以查看 傳送門
  6. 如果是死鎖導致結果一直不返回(死鎖問題)
    使用     jstack 進程id         命令查看
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章