1,使用top命令,找到Java進程的PID,我這裡找到的PID為16871。
2,找到該進程後,就要定位具體線程或代碼,首先顯示線程列表,並按照CPU占用高的線程排序:
ps -mp 16871 -o THREAD,tid,time | sort -rn
顯示結果如下:
USER %CPU PRI SCNT WCHAN USER SYSTEM TID TIME
root 90.5 19 – – – – 9521 01:16:48
root 90.1 19 – – – – 952201:02:16
找到了耗時最高的線程9521,占用CPU時間有1個多小時了。
將需要的線程ID轉換為16進制格式:
printf "%xn" 9521
2531
最後使用jvm命令打印線程的堆棧信息:
jstack 16871 |grep 2531-A 30
這樣就找到占用java,cpu資源的代碼了,接下來還得分析代碼執行的原因了。
http://xxxxxx/Linuxjc/1134289.html TechArticle