内存泄漏和弱引用

M.A*_*nin 3 .net vb.net memory-leaks weak-references

我有一个问题,看起来像我的一个应用程序中的内存泄漏(应用程序使用更多的内存随着时间的推移,在它挂起大约一周的工作后).

我已经检测并修复了一些与我编写的类相关的泄漏(比较sos.dll采用的堆转储快速显示它们),并且数量不再增加.

目前,随着时间的推移,唯一显着增加的是WeakReference实例,它以WeakReference每分钟1,000个新实例的稳定速率增长.

我的代码没有WeakReference直接使用,我自己从不创建.

什么可能导致WeakReference创建这么多实例?

我正在使用VB.NET,Visual Studio 2008和.NET 3.5

Han*_*ant 8

是的,这是VB.NET程序集中相当臭名昭着的泄漏.它是由弱引用引起的,它跟踪使用WithEvents关键字声明的事件.完成此跟踪以支持"编辑并继续".它为类中声明的每个WithEvents事件泄漏一个WeakReference实例.需要附加调试器以释放那些WeakReference对象.

解决方法很简单.发布Release版本,而不是Debug版本.