Java      Java中引起内存泄漏(OOM,OutOfMemory)的情景和处理   
文章目录  [隐藏]

先看下2个概念的定义:
1)内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。
2)内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。
memory leak会最终会导致out of memory。

1.因为集合仍持有对象的引用引起的OOM


2.因为集合自身限制引起的OOM


3.因为集合中对象的修改引起的OOM


4.因为IO引起的OOM


5.单例模式引起的OOM


6.内部类持有外部类引用,导致的OOM


7.内存优化

1)规避以上可能引发OOM的情况;
2)通过软引用和弱引用优化;
3)优化算法避免重复操作;
4)StringBuilder替代String的连接;
5)严格全局变量和局部变量的定义;
6)避免使用包装类;
7)尝试“池”操作;

承接App定制、企业web站点、办公系统软件 设计开发,外包项目,毕设