用JMap和JStack做堆dump和线程dump
命令
1. jmap -dump:format=b,file=filename pid
jmap -dump:format=b,file=jmap0225.bin 18646
jmap -histo<:live> pid : 查看当期那 heap 的对象
sudo -u tomcat jmap -histo 1234 | sudo -u tomcat tee /tmp/histo.log
jmap --heap pid : 查看 heap 结构
2. jstack pid >> file
jstack 18646 >> jstackfile
出现错误
well-known file is not secure
需要将执行命令的用户改为启动tomcat线程用户, 如下
sudo -u tomcat jmap -dump:file=filename pid
------
使用jstack分析步骤
1. top 查看java进程
2. top -p <java-pid> -H 查看消耗cpu的线程
3. <thread-id> 转为 十六进制
3. sudo -u tomcat jstack <java-pid> | grep -A 10 <0x thread-id> 查看运行状况