Java在什么情况下会内存溢出
1个回答
展开全部
1
被生命周期极长的集合类不当持有,号称是Java内存泄漏的首因。
这些集合类的生命周期通常极长,而且是一个辅助管理性质的对象,在一个业务事务运行完后,如果没有将某个业务对象主
动的从中清除的话,这个集合就会吃越来越多内存.
2
Scope定义不对,这个很简单了,方法的局部变量定义成类的变量,类的静态变量等。
3
异常时没有加finally{}来释放某些资源,JDBC时代也是很普遍的事情。
4
另外一些我了解不深的原因,如:Swing里的Listener没有显式remove;内部类持有外部对象的隐式引用;Finalizers造成关联对象没有被及时清空等。
被生命周期极长的集合类不当持有,号称是Java内存泄漏的首因。
这些集合类的生命周期通常极长,而且是一个辅助管理性质的对象,在一个业务事务运行完后,如果没有将某个业务对象主
动的从中清除的话,这个集合就会吃越来越多内存.
2
Scope定义不对,这个很简单了,方法的局部变量定义成类的变量,类的静态变量等。
3
异常时没有加finally{}来释放某些资源,JDBC时代也是很普遍的事情。
4
另外一些我了解不深的原因,如:Swing里的Listener没有显式remove;内部类持有外部对象的隐式引用;Finalizers造成关联对象没有被及时清空等。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询