程序佔用cpu太高問題解決

  • 現象:登陸機器發現有卡頓現象,因而top發現負載特別高,而且發現一進程佔滿cpu
  • 定位:記錄下該進程號,而後top -Hp <pid>找出佔用cpu太高的幾個線程,記錄線程id,根據這幾個線程id到程序線程棧中找出對應的線程。

             (上面這部分沒有保存操做截圖)線程

            jstack <pid>打印線程棧,進程

            把其中一個佔用cpu太高的線程id=23564換算成16進製爲5C0C,到線程棧中查找:登錄

            

            根據代碼行定位到對應的線程。程序

  • 解決:最終發現這是一個輪詢線程,每次輪詢應該停頓一段時間釋放cpu,在輪詢裏面加入代碼Thread.sleep(100);便可解決問題。
相關文章
相關標籤/搜索