非常详细的一篇文章:https://blog.51cto.com/u_16099346/6464857
堆dump分析:堆dump分析主要目的是定位OOM异常的原因;解决oom问题四 部曲:
1.分析OOM异常的原因,堆溢出?栈溢出?本地内存溢出?
2.如果是堆溢出,导出堆dump,并对堆内存使用有个整体了解;
3.找到最有可能导致内存泄露的元凶,通常也就是消耗内存最多的对象;
4.使用辅助工具对dump文件进行分析;
注意其他几类造成OOM异常的原因
1.Direct Memory
2.线程堆栈:单线程:StackOverflowError 多线程:OutOfMemoryError:unable to create new native thread
3.Socket 缓冲区:IOException:Too many open files