1. 程式人生 > >java生產環境下找出佔用CUP較多資源執行緒 相對定位先用top命令找出佔用資源厲害的java程序id

java生產環境下找出佔用CUP較多資源執行緒 相對定位先用top命令找出佔用資源厲害的java程序id

在這裡對linux下、sun(oracle) JDK的執行緒資源佔用問題的查詢步驟做一個小結;linux環境下,當發現java程序佔用CPU資源很高,且又要想更進一步查出哪一個java執行緒佔用了CPU資源時,按照以下步驟進行查詢:

  1. 先用top命令找出佔用資源厲害的java程序id,如:
  2. 如上圖所示,java的程序id為'12377',接下來用top命令單獨對這個程序中的所有執行緒作監視:
    1 top -p 12377 -H

    如圖:

  3. 如上圖所示,linux下,所有的java內部執行緒,其實都對應了一個程序id,也就是說,linux上的sun jvm將java程式中的執行緒對映為了作業系統程序;我們看到,佔用CPU資源最高的那個程序id是'15417',這個程序id對應java執行緒資訊中的'nid'('n' stands for 'native');
  4. 要想找到到底是哪段具體的程式碼佔用瞭如此多的資源,先使用jstack打出當前棧資訊到一個檔案裡, 比如stack.log:
    1 jstack 12377 > stack.log

    5. vi statck.log  分析日誌檔案大概能定位到是哪兒的問題 如果誰還有更好的方法,可以推薦給我學習學習