首先得明白什么是内存泄露?
内存泄露指的就是一个不再被程序使用的对象或者变量一直被占据在内存中没有被释放。属于占着茅坑不拉屎的那种情形就属于内存泄露了。
造成内存泄露有两个条件:无用,无法回收。
如果一个外部类的实例对象的方法返回了它的内部类的实例对象,这个内部实例对象就被长期引用了,
及时外部类实例对象以后不再被使用了,但由于内部类持久化了外部类的实例对象,这个外部类对象也不会被垃圾回收了,就造成了内存泄露
还有一种情况,当一个对象被存储进HashSet集合中时,就不能修改这个对象中的那些参与计算哈希值的字段了。
否则,对象修改后的哈希值与最初的哈希值会不同,以后通过引用去找个集合中的对象就再也找不到正确的对象了,
这也会导致无法从HashSet集合中单独删除当前对象了,也会造成内存泄露 |