成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何定位消耗CPU最多的線程

開發(fā) 開發(fā)工具
今天發(fā)篇輕松點(diǎn)的文章,可能大家在工作過程中也會(huì)可能碰到類似的問題,或許有經(jīng)驗(yàn)的同學(xué)看到這個(gè)題目就知道我要說什么了,也有自己的定位方法。

[[181429]]

之前有朋友反饋說發(fā)的內(nèi)容希望有個(gè)梯度,逐步加深,前面發(fā)了幾篇關(guān)于jvm源碼分析的文章,可能我覺得我已經(jīng)把內(nèi)容寫得淺顯易懂了,但是對(duì)于某些沒怎么接觸的同學(xué)來說還是比較難理解,這個(gè)我以后慢慢改進(jìn)吧,今天發(fā)篇輕松點(diǎn)的文章,可能大家在工作過程中也會(huì)可能碰到類似的問題,或許有經(jīng)驗(yàn)的同學(xué)看到這個(gè)題目就知道我要說什么了,也有自己的定位方法。

話不多說了,先來看代碼吧

  1. public class Test{ 
  2.         public static void main(String args[]){ 
  3.                 for(int i=0;i<10;i++){ 
  4.                         new Thread(){ 
  5.                                 public void run(){ 
  6.                                         try{ 
  7.                                                 Thread.sleep(100000); 
  8.                                         }catch(Exception e){} 
  9.                                 } 
  10.                         }.start(); 
  11.                 } 
  12.                 Thread t=new Thread(){ 
  13.                         public void run(){ 
  14.                                 int i=0; 
  15.                                 while(true){ 
  16.                                         i=(i++)/100; 
  17.                                 } 
  18.                         } 
  19.                 }; 
  20.                 t.setName("Busiest Thread"); 
  21.                 t.start(); 
  22.         } 

這個(gè)例子里新創(chuàng)建了11個(gè)線程,其中10個(gè)線程沒干什么事,主要是sleep,另外有一個(gè)線程在循環(huán)里一直跑著,可以想象這個(gè)線程是這個(gè)進(jìn)程里最耗cpu的線程了,那怎么把這個(gè)線程給抓出來呢?

首先我們可以通過top -Hp <pid>來看這個(gè)進(jìn)程里所有線程的cpu消耗情況,得到類似下面的數(shù)據(jù)

  1. top -Hp 18207 
  2. top - 19:11:43 up 573 days,  2:43,  2 users,  load average: 3.03, 3.03, 3.02 
  3. Tasks:  44 total,   1 running,  43 sleeping,   0 stopped,   0 zombie 
  4. Cpu(s): 18.8%us,  0.0%sy,  0.0%ni, 81.1%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st 
  5. Mem:  99191752k total, 98683576k used,   508176k free,   128248k buffers 
  6. Swap:  1999864k total,   191064k used,  1808800k free, 17413760k cached 
  7.  
  8.   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND 
  9. 18250 admin     20   0 26.1g  28m  10m R 99.9  0.0   0:19.50 java Test 
  10. 18207 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test 
  11. 18208 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.09 java Test 
  12. 18209 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test 
  13. 18210 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test 
  14. 18211 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test 
  15. 18212 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test 
  16. 18213 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test 
  17. 18214 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test 
  18. 18215 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test 
  19. 18216 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test 
  20. 18217 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test 
  21. 18218 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test 
  22. 18219 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test 
  23. 18220 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test 
  24. 18221 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test 
  25. 18222 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test 
  26. 18223 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test 
  27. 18224 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test 
  28. 18225 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test 
  29. 18226 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test 
  30. 18227 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test 

拿到這個(gè)結(jié)果之后,我們可以看到cpu***的線程是pid為18250的線程,占了99.8%:

  1. PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 
  2. 18250 admin 20 0 26.1g 28m 10m R 99.9 0.0 0:19.50 java Test 

接著我們可以通過jstack <pid>的輸出來看各個(gè)線程棧:

  1. $ jstack 18207 
  2. 2016-03-30 19:12:23 
  3. Full thread dump OpenJDK 64-Bit Server VM (25.66-b60 mixed mode): 
  4.  
  5. "Attach Listener" #30 daemon prio=9 os_prio=0 tid=0x00007fb90be13000 nid=0x47d7 waiting on condition [0x0000000000000000] 
  6.    java.lang.Thread.State: RUNNABLE 
  7.  
  8. "DestroyJavaVM" #29 prio=5 os_prio=0 tid=0x00007fb96245b800 nid=0x4720 waiting on condition [0x0000000000000000] 
  9.    java.lang.Thread.State: RUNNABLE 
  10.  
  11. "Busiest Thread" #28 prio=5 os_prio=0 tid=0x00007fb91498d000 nid=0x474a runnable [0x00007fb9065fe000] 
  12.    java.lang.Thread.State: RUNNABLE 
  13.     at Test$2.run(Test.java:18) 
  14.  
  15. "Thread-9" #27 prio=5 os_prio=0 tid=0x00007fb91498c800 nid=0x4749 waiting on condition [0x00007fb906bfe000] 
  16.    java.lang.Thread.State: TIMED_WAITING (sleeping) 
  17.     at java.lang.Thread.sleep(Native Method) 
  18.     at Test$1.run(Test.java:9) 
  19.  
  20. "Thread-8" #26 prio=5 os_prio=0 tid=0x00007fb91498b800 nid=0x4748 waiting on condition [0x00007fb906ffe000] 
  21.    java.lang.Thread.State: TIMED_WAITING (sleeping) 
  22.     at java.lang.Thread.sleep(Native Method) 
  23.     at Test$1.run(Test.java:9) 
  24.  
  25. "Thread-7" #25 prio=5 os_prio=0 tid=0x00007fb91498b000 nid=0x4747 waiting on condition [0x00007fb9073fe000] 
  26.    java.lang.Thread.State: TIMED_WAITING (sleeping) 
  27.     at java.lang.Thread.sleep(Native Method) 
  28.     at Test$1.run(Test.java:9) 
  29.  
  30. "Thread-6" #24 prio=5 os_prio=0 tid=0x00007fb91498a000 nid=0x4746 waiting on condition [0x00007fb9077fe000] 
  31.    java.lang.Thread.State: TIMED_WAITING (sleeping) 
  32.     at java.lang.Thread.sleep(Native Method) 
  33.     at Test$1.run(Test.java:9) 
  34. ... 

上面的線程棧我們注意到nid的值其實(shí)就是線程ID,它是十六進(jìn)制的,我們將消耗cpu***的線程18250,轉(zhuǎn)成十六進(jìn)制0X47A,然后從上面的線程棧里找到nid=0X47A的線程,其棧為:

  1. "Busiest Thread" #28 prio=5 os_prio=0 tid=0x00007fb91498d000 nid=0x474a runnable [0x00007fb9065fe000] 
  2.    java.lang.Thread.State: RUNNABLE 
  3.     at Test$2.run(Test.java:18) 

即將最耗cpu的線程找出來了,是Businest Thread

【本文是51CTO專欄作者李嘉鵬的原創(chuàng)文章,轉(zhuǎn)載請(qǐng)通過微信公眾號(hào)(你假笨,id:lovestblog)聯(lián)系作者本人獲取授權(quán)】

戳這里,看該作者更多好文

責(zé)任編輯:武曉燕 來源: 你假笨
相關(guān)推薦

2023-02-26 10:18:24

數(shù)據(jù)庫SQL語句

2021-12-05 18:18:20

linux

2011-03-23 14:42:47

CPU過度消耗

2019-06-03 10:30:42

MySQLCPU數(shù)據(jù)庫

2020-03-19 15:10:02

MySQLCPU數(shù)據(jù)庫

2023-02-25 10:09:52

數(shù)據(jù)庫SQL 語句

2022-05-27 11:59:22

Linux內(nèi)存CPU

2021-07-28 07:53:20

CPU 線程切換

2020-08-03 14:17:34

CPU內(nèi)存系統(tǒng)運(yùn)維

2023-03-20 17:27:54

Cpukafka

2010-03-18 16:02:09

python 多線程

2013-11-27 16:32:51

宕機(jī)kswapd0CPU

2022-12-09 14:40:16

CPU進(jìn)程快速定位

2010-04-16 10:38:49

CPU消耗

2020-03-09 15:00:39

MySQLCPU數(shù)據(jù)庫

2022-04-06 06:35:58

進(jìn)程命令CPU

2020-08-13 08:45:09

多線程死鎖

2021-05-10 08:20:32

CPU 符號(hào)整數(shù)

2022-06-02 20:27:45

智能照明智能建筑物聯(lián)網(wǎng)

2019-12-16 10:43:38

Linux內(nèi)存消耗進(jìn)程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩欧美在线观看 | 精品欧美乱码久久久久久 | 老头搡老女人毛片视频在线看 | 91在线视频网址 | 中文在线一区二区 | 亚洲国产精品久久久久婷婷老年 | 日美女逼逼 | 91久久精品国产 | 天天拍夜夜爽 | 亚洲精品在线观 | 日韩精品一区二区三区四区视频 | 99亚洲精品 | 欧美a区| 狠狠干狠狠插 | 亚洲欧美中文日韩在线v日本 | 免费小视频在线观看 | 99久久婷婷国产综合精品电影 | 久草视频在线播放 | 亚洲在线| 7777精品伊人久久精品影视 | 国产日韩欧美一区二区 | 成人在线免费 | 日韩av高清在线 | 在线精品亚洲欧美日韩国产 | 91性高湖久久久久久久久_久久99 | 91色啪| 国产成人精品999在线观看 | 日韩www | 亚洲精品一区二区网址 | 看av电影 | 亚洲国产一区二区三区在线观看 | 一区二区久久精品 | 国产精品视频一二三 | 美美女高清毛片视频免费观看 | 亚洲一区精品在线 | 欧美涩涩网 | 亚洲综合无码一区二区 | 国产精品久久久久一区二区三区 | 欧美精品日韩精品 | 久久99精品国产 | 中文字幕 在线观看 |