1、 top 看看哪个进程是罪魁祸首
2、将这个进程的jstack dump 到一个文件里面,以备使用。
jstack -l 25886 > /tmp/jstack.log
# 如果报错,则加 -F 命令强制执行。
jstack -F 25886 > /tmp/jstack.log
使用 sftp 弄到本地。
3、查看这个进程里面哪些子进程, 按 P 键排序占用 CPU 的子进程
top -H -p 25886 (top得到的进程号)
# 这里得到的子进程id 为 26017,把该值转化为十六进制
echo 26017 |awk '{printf("%x\n",$0)}'
# 得到
65a1
4、在 jstack.log 中搜索 65a1
============================
top -H -p 25886 (top得到的进程号)
# 这里得到的子进程id 为 26017,把该值转化为十六进制
printf "%x" 26017
# 得到
65a1
jstack 26017 | grep 65a1
通过 jmap 找到最耗内存的对象
方法:
jmap -histo:live 25886 | more