1、出现问题的可能原因
对于应用来说内存分配太少
对象创建太多,又没有释放,造成内存泄漏严重,导致内存耗尽
申请太多的系统资源,系统资源耗尽。例如:不断创建线程,不断发起网络连接
2、如何定位问题(可直接对dump文件分析)
确定是否时内存过小
命令: jmap –heap PID
查看对象消耗内存情况
命令:jmap –histo:live PID | more (执行该命令会强制执行一次fgc,自己判断是否可用)
查看gc情况
命令:jstat –gcutil PID 查看gc情况
使用dump分析
命令:jmap -dump:format=b,file=a.hprof pid 导出dump文件
实例:jmap -dump:format=b,file=a.hprof 13888
Sz a.hprof下载a.hprof到windows
使用Memory Analyzer工具进行可视化分析
查看哪些类占用资源过多,对应进行优化