在.NET中,垃圾回收机制会将不可访问的内存(堆)进行回收。也就是说,当一些对象一直存在一个或多个指向 它的引用时,它们就不会被回收。这些对象有可能就是内存泄漏的隐患。
1. 非托管代码的存在 有些对象要求在不用的时候手动调用close() 或着dispose() 等释放内存的函数。没有调用它们或者没有放在 using语句块中将有可能导致内存泄漏。 或者当使用不安全的C++代码时,也有可能导致这个问题。
2. 静态全局变量 这些变量一般来说在进程的整个生命周期中将一直存在。特别是一些集合如ArrayList,它们的膨胀也将会导致 内存泄漏问题。
3. 事件 当一个事件被创建并注册了(+=)一些函数后,虽然程序退出了事件对象当前所在的代码区域,但这个引用会一直 存在。适当的时候对没用的事件进行取消注册(-=)是一个预防内存泄漏的好方法。
暂时就总结了这么多