一、什么是内存泄漏
内训泄露(Memory Leak)是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果
二、Java中的内存泄露
Java中的内存泄漏是指无用对象(不再使用的对象)持续占有内存或无用对象的内存得不到释放,从而造成的内存空间的浪费称为内存泄露。内存泄露有事不严重且不易察觉,这样开发者就不知道存在内存泄露,但有时也会很严重,会提示你Out of memory(内存溢出)。
Java内存泄漏的原因主要是一些对象虽然不再被使用,但它们任然被引用。
长生命周期的对象 持有 短生命周期的引用,就很有可能发生内存泄露,尽管 短生命周期对象 已不再需要,但因为 长生命周期对象 持有它的引用而导致不能被回收,这就是Java内存泄露的发生场景
三、处理方案
一般来说,查找内存泄露有两种思路:第一种就是安排有经验的编码人员对代码进行走查和分析,找出内存泄露发生的位置;第二种就是利用一些内存检查分析工具来检查内存泄露,检查的主要原理就是暴露出所有堆中的对象,让程序员寻找那些无用但仍然被引用的对象。
这个网址写的蛮详细的:https://www.cnblogs.com/xuxg/archive/2012/08/07/2627411.html