内存泄漏和弱引用

时间:2011-10-27 14:00:30

标签: .net vb.net memory-leaks weak-references

我遇到的问题在我的某个应用程序中看起来像是内存泄漏(应用程序会随着时间的推移使用更多的内存,经过大约一周的工作后会挂起)。

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

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

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

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

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

1 个答案:

答案 0 :(得分:8)

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

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