内存泄漏是指一个不再被程序使用的对象或者变量还在内存中占用存储空间。
在java语言中,容易引起内存泄漏的原因很多,主要有以下几个方面的内容。
- 静态集合类。例如HashMap和Vector。如果这些容器为静态的,由于他们的生命周期与程序一致,那么容器中的对象在程序结束之前将不能被释放,从而造成内存泄漏。
- 各种连接。如果数据库连接,网络连接,以及IO连接等。如果不显式地关闭,将会造成大量的对象无法被回收。
- 监听器。通常一个应用中会用到多个监听器,但在释放对象的同时往往没有相应地删除监听器,这也可能导致内存泄漏。
- 变量不合理作用域。如果没有及时地把对象设置为null,可能会导致内存泄漏的发生。