[java中内存泄露有几种?如何分析泄露原因](https://zhidao.baidu.com/question/940353589333492252.html)
内存泄露是指无用对象(不再使用的对象)持续占有内存或无用对象的内存得不到及时释放,从而造成的内存空间的浪费称为内存泄露。
Java内存泄露根本原因是什么呢?长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露,尽管短生命周期对象已经不再需要,但是因为长生命周期对象持有它的引用而导致不能被回收,这就是java中内存泄露的发生场景。具体主要有如下几大类:
1、静态集合类引起内存泄露
2、当集合里面的对象属性被修改后,再调用remove()方法时不起作用。
3、监听器
但往往在释放对象的时候却没有记住去删除这些监听器,从而增加了内存泄漏的机会。
4、各种连接
数据库连接 网络连接未释放
5、内部类和外部模块等的引用
6、单例模式
7、如果单例对象持有外部对象的引用,那么这个外部对象将不能被jvm正常回收,导致内存泄露。
网友评论