【轉】一次java系統線程占用CPU過高問題的解決


1、下載Windows系統和應用程序監視工具Process Explorer

https://download.sysinternals.com/files/ProcessExplorer.zip

2、打開ProcessExplorer,找到cpu占用高的java.exe,記下進程編號PID,比如當前是9520

3、雙擊java.exe進程,打開查看CPU占用高的線程,記下線程編號TID,比如當前19600,轉成16進制為4C90

 

4、使用的java的jstack工具

打開doc命令行,執行命令:jstack -l 9520 >> D:\\jstack.txt

打開D盤下的jstack.txt文件,搜索16進制的線程編號4C90,找到后就可定位到有問題的代碼。

5、linux系統下查找java占cpu高的線程

1,使用top 命令動態的展示占用前幾的進程PID, CPU消耗, TIME, RES 等信息,然后找到CPU占用最高的PID。

2 , top -Hp  19600(pid)  顯示PID進程消耗的線程各個情況。着到一個認為TIME最長的線程的PID,將PID轉成16進制4C90,例如:

printf "%x\n" 19600(PID)。

3、使用jstack工具定位問題的原因 ./jstatck -l 9520 | grep 4C90  -A 80 。

說明:-A 80 是關鍵字后的80行代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM