- 查看cup的使用情况,在Linux下可以使用 top 或者 htop命令
top -u ${用户} -c
top -u devops -c
- 在命令行提示符执行top命令,输入大写P,则结果按CPU占用降序排序。输入大写M,结果按内存占用降序排序。大写T按运行时间排序。(注:大写P可以在capslock状态输入p,或者按Shift+p)。
- 具体的可以参考:
http://www.169it.com/it-linux/article-linux%E4%B8%8Btop%E5%91%BD%E4%BB%A4%E8%AF%A6%E8%A7%A3-virt-res-shr-%E6%8E%92%E5%BA%8F-6549555377111610135

jps -lvm
ps -ef | grep Test

top -Hp 2444

printf "%x\n" 线程ID
eg. printf "%x\n" 2459

- 通过jstack输出进程(2444)的堆栈信息,然后根据16进制的线程ID过滤结果
jstack 2444 | grep 99b
jstack 2444 >stack.txt
- 这样就定位到了具体引起cup高的代码位置了(下图:Test.java类的第7行)

grep "99b" stack.txt -A 25
grep -C 5 foo file 显示file文件里匹配foo字串那行以及上下5行
grep -B 5 foo file 显示foo及前5行
grep -A 5 foo file 显示foo及后5行

1) 死锁,Deadlock(重点关注)
2) 执行中,Runnable
3) 等待资源,Waiting on condition(重点关注,等待什么资源)
4) 等待获取监视器,Waiting on monitor entry(重点关注)
5) 暂停,Suspended
6) 对象等待中,Object.wait() 或 TIMED_WAITING
7) 阻塞,Blocked(重点关注)
8) 停止,Parked
