Linux 某個進程中占用CPU高的線程


1、通過top,找出占用CPU高的進程ID

2、

如上圖所示,java的進程id為’52554′,接下來用top命令單獨對這個進程中的所有線程作監視:

top-p52554 -H

3、如圖:(這時就看出來哪個java線程CPU高,哪個線程內存用的多)

4、

如上圖所示,linux下,所有的java內部線程,其實都對應了一個進程id,也就是說,linux上的sun jvm將java程序中的線程映射為了操作系統進程;我們看到,占用CPU資源最高的那個進程id是’15417′,這個進程id對應java線程信息中的’nid’(‘n’ stands for ‘native’);

5、要想找到到底是哪段具體的代碼占用了如此多的資源,先使用jstack打出當前棧信息到一個文件里, 比如stack.log:

  1. jstack 52554 > stack.log
  2. python -c"print hex(9757)"然后記住二進制的號
  3. cat stack.log|grep 二進制的號


免責聲明!

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



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