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最高的程式對應的SQL語句SQL
- cpu、核與執行緒執行緒
- JVM程式用一個主執行緒來執行main()方法JVM執行緒AI
- w3wp佔用CPU過高的解決過程,由Dictionary執行緒安全引起執行緒
- Java執行緒的CPU時間片Java執行緒
- JVM 進行執行緒同步背後的原理JVM執行緒
- 1、多執行緒同步——CPU、core核、執行緒、記憶體執行緒記憶體
- 4核8執行緒和6核6執行緒的CPU哪個好?電腦CPU核數多和執行緒多的區別執行緒
- Python 多執行緒無用?深入總結 二(深入瞭解GIL 執行緒守護 執行緒程式CPU關係)Python執行緒
- JVM可支援的最大執行緒數(轉)JVM執行緒
- 如何檢視CPU核數和執行緒數?CPU的核心數、執行緒數的關係和區別執行緒
- 在Linux中,如何查詢系統中佔用CPU最高的程序?Linux
- 記一次w3wp佔用CPU過高的解決過程(Dictionary和執行緒安全)執行緒
- disruptor如何實現每CPU執行一個執行緒?執行緒
- 執行緒繫結cpu核心的程式碼研究執行緒
- java多執行緒問題 多核cpu遇上java多執行緒,求解釋Java執行緒
- JVM 執行緒池發展趨勢JVM執行緒
- linux 下檢視物理CPU,邏輯CPU,CPU core,超執行緒Linux執行緒
- 檢視cpu是否開啟超執行緒執行緒
- Linux 中執行緒與 CPU 核的繫結Linux執行緒
- Windows下繫結執行緒到指定的CPU核心Windows執行緒
- 深入理解JVM(③)再談執行緒安全JVM執行緒
- 從Java到JVM到OS執行緒睡眠JavaJVM執行緒
- 跟著sleep看jvm執行緒變化JVM執行緒
- 檢視和診斷JVM執行緒資訊JVM執行緒
- 程式佔用cpu排序排序
- docker執行容器後agetty程式cpu佔用率100%Docker
- 為什麼說執行緒太多,cpu切換執行緒會浪費很多時間?執行緒
- ObjC 多執行緒簡析(一)-多執行緒簡述和執行緒鎖的基本應用OBJ執行緒
- 從 JVM 記憶體模型談執行緒安全JVM記憶體模型執行緒
- 理解JVM(六):執行緒安全和鎖優化JVM執行緒優化
- JVM 執行緒堆疊分析過程詳解JVM執行緒
- 檢視伺服器CPU的個數、CPU的核數、多核超執行緒數伺服器執行緒