1. 程式人生 > >Linux 某個進程中占用CPU高的線程

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

alt 技術分享 fill size print 當前 AC fontsize java

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 二進制的號

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