Java内存泄漏
什么是内存泄漏:
对象没有被应用程序使用,但是没有移除掉,还在被引用。
判断一个内存空间是否符合垃圾收集的标准有两个:一个是给对象赋予了空值null,以下再没有调用过另一个是给对象赋予了新值,这样重新分配了内存空间。
Java内存泄漏引起的原因
无用对象持续占有内存或者得不到及时释放,从而造成内存浪费称为内存泄漏
-
静态集合类没有清空造成内存泄漏
-
listener释放对象的时候删除监听器
-
数据库连接,网络连接,io流要及时close
java内存分配策略
-
静态存储区:静态数据,全局static数据,常量
-
栈:局部变量,基础数据类型,对象引用
-
堆:动态内存分配,直接new出来的对象
堆和栈区别
栈:基本类型的变量,对象的引用变量
堆:new出来的对象和数组
如何防止内存泄漏
在确认一个对象无用后,将其所有引用显式的置为null