JAVA面经内存溢出

1、长生命周期持有短声明周期的对象,尽管短生命周期不再使用,但是由于长生命周期一直存在,导致不能被回收

2、各种连接,如果不进行close很多的对象都不会被回收。

3、变量的作用域过大,导致生命周期过长

4、内部类持有外部类

5、hashmap中存放了某个对象,但是修改了这个对象中的参与计算哈希的值,这种情况如果再次去查找就找不到这个结果。导致无法删除该对象,导致内存溢出

6、缓存泄露,hashmapo中很容易遗忘,可以用弱引用,当内存不够时会进行垃圾回收WeakHashMap