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