經過top命令查看當前CPU及內存狀況java
top 86786 java 98.4 13:22.7
得到pid,經過top -H -p86786
查看有問題的線程bash
說明: -H 指顯示線程,-p 是指定進程
能夠看到兩個CPU或內存佔用較高的線程,記下PID( 此處的PID即爲線程ID標識) ,將其從十進制轉成十六進制表示,如0x7f1線程
printf "%x\n" tid 0x7f1
經過jstack命令獲取當前線程棧,可暫時保存到一個文件tempfile.txt中,在tempfile.txt中查找nid=0x7f1的線程code
jstack pid | grep '0x7f1'
ps -ef|grep java
或 ps -ef|grep java
ps -mp 8514 -o THREAD,tid,time,pmem
查出進程下線程信息,能夠查出%CPU高,TIME長的線程ID(tid)printf "%x\n" 8593
tid(8593)轉化爲十六進制2191jstack 8514|grep 2191
打印出堆棧信息查看指定進程下線程的ID,時間,cpu,內存狀況並根據消耗時間排序
ps -mp 9793 -o user,pid,ppid,tid,time,%cpu,%mem,cmd | sort -rk5