Java的最著名的特点之一就是它的自动内存管理机制,程序员无需关心对象的回收问题,方便使用。然而事实上Java容易发生内存泄露的问题,从而导致工作效果降低等问题。
什么是内存泄露— Memory Leak ?
内存泄漏指的是当对象不再被程序使用时,但是垃圾回收器却不能回收它们,因为它们正在被引用。
如图所示,对象分为被引用的和未被引用的。未被引用的对象会被垃圾回收器回收来释放内存,被引用对象则不会被回收。当部分对象出现被引用但是在程序中将不再使用的情况,那么实际这些对象已经没有存在的意义了,应该被销毁,垃圾回收器却不能回收它们,占用无意义的内存,这就是内存泄露。