当前位置: 首页 > 后端技术 > Java

内存泄漏的常见原因

时间:2023-04-01 20:50:44 Java

1.像hashmap、vector等静态集合类,如果是全局静态的,如果集合只增不减,就会造成泄漏。有增加或减少集合类的方法。2.当集合中的对象属性被修改时,调用remove()将不起作用pa=newperson;设置.添加(一);a.setName("ddd");set.remove(a);放下,set.add(a);还是可以成功,里面有两个a对象,修改前的a无法访问,内存泄漏,因为属性改变了对象的hashcode,导致找不到set。3.Listener当我们给一个控件添加监听对象时,控件会将这些监听对象存储在集合之类的东西中,释放对象时忘记删除监听4.各种连接忘记close();5.内部类和外部模块的引用将对象的引用传递给外部模块,外部模块并没有移除这个引用;6.单例模式下的单例对象一直存在,如果这个对象持有对其他对象的引用,如果不移除这个引用,会导致这个对象泄漏