JVM找出佔用CPU最高的執行緒
第一步: 通過 top命令查詢到這個消耗CPU的程式號PID 8958
top
第二步:使用 top -Hp pid(shift+p 按cpu排序,shift+m 按記憶體排序)
top -Hp 8958
獲取到這個程式下面所有執行緒,通過檢視%CPU找到最耗費CPU的是執行緒PID
第三步:使用 printf '%x\n' PID (PID為上一步中獲取到的執行緒號)轉換成對應的16進位制PID 5c7e
第四步:使用jstack 獲取對應的執行緒資訊
jstack 8958 | grep 5c7e
注意:8958是一開始獲取的程式號,而5c7e則是這個程式下面最最耗費CPU的執行緒號
第五步:jstack pid(程式pid)>stack.dump
執行上面的命令,將該消耗程式的執行緒相關資訊匯出到stack.dump檔案中,開啟這個檔案檢視每個執行緒的具體狀態
一般來說,出現問題的程式碼大多數是我們自己寫的業務程式碼導致的,所以我們可以通過檢視那些我們自己建立的類的相關資訊,比如根據我們自己建立的包路徑去搜尋,搜尋結果可能不止一個地方會出現我們的包路徑,這個就需要結合我們自己的程式碼的業務邏輯來定位到底是哪一個執行緒可能出現問題了。
相關文章
- top命令找到佔用CPU最高的java執行緒Java執行緒
- JVM調優jstack找出最耗cpu的執行緒&定位問題程式碼JVMJS執行緒
- 如何在 Linux 中找出 CPU 佔用高的程序Linux
- JVM中的執行緒行為JVM執行緒
- 深入理解JVM(③)執行緒與Java的執行緒JVM執行緒Java
- cpu、核與執行緒執行緒
- JVM程式用一個主執行緒來執行main()方法JVM執行緒AI
- Java執行緒的CPU時間片Java執行緒
- Python 多執行緒無用?深入總結 二(深入瞭解GIL 執行緒守護 執行緒程式CPU關係)Python執行緒
- 4核8執行緒和6核6執行緒的CPU哪個好?電腦CPU核數多和執行緒多的區別執行緒
- 1、多執行緒同步——CPU、core核、執行緒、記憶體執行緒記憶體
- 如何檢視CPU核數和執行緒數?CPU的核心數、執行緒數的關係和區別執行緒
- 在Linux中,如何查詢系統中佔用CPU最高的程序?Linux
- 執行緒繫結cpu核心的程式碼研究執行緒
- Windows下繫結執行緒到指定的CPU核心Windows執行緒
- docker執行容器後agetty程式cpu佔用率100%Docker
- 跟著sleep看jvm執行緒變化JVM執行緒
- 深入理解JVM(③)再談執行緒安全JVM執行緒
- 從Java到JVM到OS執行緒睡眠JavaJVM執行緒
- ObjC 多執行緒簡析(一)-多執行緒簡述和執行緒鎖的基本應用OBJ執行緒
- 為什麼說執行緒太多,cpu切換執行緒會浪費很多時間?執行緒
- JAVA CPU100%與執行緒死鎖定位Java執行緒
- Systrace 執行緒 CPU 執行狀態分析技巧 - Sleep 和 Uninterruptible Sleep 篇執行緒
- win10系統執行dnf時cpu佔用100怎麼解決Win10
- 檢視伺服器CPU的個數、CPU的核數、多核超執行緒數伺服器執行緒
- 理解JVM(六):執行緒安全和鎖優化JVM執行緒優化
- 多執行緒應用執行緒
- 執行緒、開啟執行緒的兩種方式、執行緒下的Join方法、守護執行緒執行緒
- redis為什麼用單執行緒不用多執行緒Redis執行緒
- 多執行緒------執行緒與程式/執行緒排程/建立執行緒執行緒
- 細說 Android 下的多執行緒,學會了多執行緒,你就學會了壓榨CPU!Android執行緒
- 聊聊CPU的發展歷程之單核、多核、超執行緒單核執行緒
- 詳解CPU的主頻、核心、執行緒、快取、架構執行緒快取架構
- 對多執行緒程式,單核cpu與多核cpu如何工作相關的探討執行緒單核
- AMD執行緒撕裂者2990WX開箱圖賞 32核心64執行緒最強CPU執行緒
- 從Java到JVM到OS執行緒的優先順序JavaJVM執行緒
- 判斷應用所執行的CPU型別型別
- PyQt應用程式中的多執行緒:使用Qt還是Python執行緒?QT執行緒Python