程序内存溢出排查 总结
内存溢出分析
JAVA dump查看线程运行情况:
=====查看栈信息=======================
1.查询java程序pid
netstat -ntpl | grep 8080
2.使用jstack [-l] 进程pid > xxx.log将所有线程信息输入到指定文件中
1)如果程序正常运行:使用jstack [-l] 进程pid > xxx.log将所有线程信息输入到指定文件中
2)如果程序无响应:使用 jstack -F [-m] [-l] 进程pid >xxx.log强制打印栈信息
=====查看堆信息=======================
3.使用top命令找出占用cpu高(或者执行时间很长)的进程pid
4.使用top -H -p 线程pid 找出占用cpu高(或执行时间长)的线程pid
5.将占用cpu高的线程pid转换成16进制(window自带计算器)
6.dump该进程的内存
jmap -dump:format=b,file=文件名 [进程pid] 将转换后的pid在开始输出的dump文件(xxx.log)中搜索对应线程信息
7.eclipse Memory Analyzer 对dump文件分析