Java有了GC为什么还会出现内存泄漏问题?
1. 静态集合类泄漏
静态集合类像HashMap,Vector等的使用最容易出现内存泄漏,静态变量的声明周期与应用程序一直,所有的对象Object也不能内释放,因为被其他对象引用着。
2. 单例造成的泄漏
单例对象在初始化后将在JVM的整个生命周期中存在(以静态变量的方式),如果单例对象持有外部的引用,那么这个对象将不能被JVM正常回收,导致内存泄漏。
3.各种连接
数据库连接,网络连接,IO连接等没有显式调用close()关闭,会导致内存泄漏。
4.监听器的使用
在释放对象的同时,没有删除相应监听器,也会造成内存泄漏。