java生產環境下找出佔用CUP較多資源執行緒 相對定位先用top命令找出佔用資源厲害的java程序id
阿新 • • 發佈:2019-01-09
在這裡對linux下、sun(oracle) JDK的執行緒資源佔用問題的查詢步驟做一個小結;linux環境下,當發現java程序佔用CPU資源很高,且又要想更進一步查出哪一個java執行緒佔用了CPU資源時,按照以下步驟進行查詢:
- 先用top命令找出佔用資源厲害的java程序id,如:
- 如上圖所示,java的程序id為'12377',接下來用top命令單獨對這個程序中的所有執行緒作監視:
1
top
-p 12377 -H
- 如上圖所示,linux下,所有的java內部執行緒,其實都對應了一個程序id,也就是說,linux上的sun jvm將java程式中的執行緒對映為了作業系統程序;我們看到,佔用CPU資源最高的那個程序id是'15417',這個程序id對應java執行緒資訊中的'nid'('n' stands for 'native');
- 要想找到到底是哪段具體的程式碼佔用瞭如此多的資源,先使用jstack打出當前棧資訊到一個檔案裡, 比如stack.log:
1
jstack 12377 > stack.log
5. vi statck.log 分析日誌檔案大概能定位到是哪兒的問題 如果誰還有更好的方法,可以推薦給我學習學習