cpu100%問題定位
程序中寫一個死循環
thread = new Thread(() -> {
while (true) {
}
});
thread.start();
top -c顯示進程運行詳細列表
鍵入P可以按照cpu使用率排序
可以用top -p pid定位到當前進程
按H,切換到線程,這時顯示的是一個進程的線程信息表,這時左上角顯示的Threads
也可以不定位到當前進程,直接按H切換到線程,顯示系統中所有線程
可以看到線程id爲1626,把線程id轉換成16進制
[xuhaixing@xhx190 ~]$ printf "%x\n" 1626
65a
進程id爲1611,本機進程id與vmid相同,然後用jstack命令可以查看到運行的線程的信息
[xuhaixing@xhx190 ~]$ jstack 1611
xxxx
"Thread-2" #14 prio=5 os_prio=0 tid=0x00007f440caf0800 nid=0x65a runnable [0x00007f43f5925000]
java.lang.Thread.State: RUNNABLE
at com.xhx.spring.springoom.SpringOomApplication.lambda$afterPropertiesSet$0(SpringOomApplication.java:33)
at com.xhx.spring.springoom.SpringOomApplication$$Lambda$363/1477657879.run(Unknown Source)
at java.lang.Thread.run(Thread.java:748)
"container-0" #13 prio=5 os_prio=0 tid=0x00007f440c8f4800 nid=0x659 waiting on condition [0x00007f43f651f000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at org.apache.catalina.core.StandardServer.await(StandardServer.java:570)
at org.springframework.boot.web.embedded.tomcat.TomcatWebServer$1.run(TomcatWebServer.java:181)
xxxx
實時內容請關注微信公衆號,公衆號與博客同時更新:程序員星星