>
目錄
- Linux系統java進程CPU占用過高
- Linux如何定位Java進程CPU利用率過高原因
- 總結
Linux系統java進程CPU占用過高
1.通過top命令查看,CPU占用高的進程
top
2.查看該進程下線程占用CPU情況
# 12133-進程號 top -Hp 12133
這里的PID是線程ID,可以看到,有幾個線程CPU占用過高。
3.將線程ID轉成16進制
printf '0x%x\n' 5421
4.通過jstack命令查看線程堆棧
# 12113-進程號 # 0xc81-上面查到的16進制線程號 jstack 12113|grep 0xc81 -A 20
通過堆棧信息,找到具體的代碼,分析原因。
Linux如何定位Java進程CPU利用率過高原因
首先通過Top命令查看占用CPU較高的進程PID,執行Top之后按1可以查看每個核占用比例
top
這里由于我是用的虛擬機,即使我的Java進程占用CPU很高也只是占的虛擬機的,而對整個機器的CPU來說占的并不高。
這里我們找到了pid=7957
然后我們在根據pid找出占用CPU過高的線程
top -H -p 7957
然后根據線程id=7958使用strace -p命令查看調用情況
發現系統在不停的打印1然后把線程十進制的線程id=7958轉換為十六進制
最后抓取堆棧信息,查看代碼位置
我看找到了線程7958,并且定位到了Test.main第四行,我們打開代碼看看
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持。
>