我遇到的问题在我的某个应用程序中看起来像是内存泄漏(应用程序会随着时间的推移使用更多的内存,经过大约一周的工作后会挂起)。
我已经检测到并修复了一些与我编写的类相关的泄漏(比较sos.dll采取的堆转储很快就会显示它们),而且那些数量不再增加。
目前,随着时间的推移,唯一显着增加的是WeakReference
个实例,它们以每分钟1,000个新WeakReference
个实例的稳定速度增长。
我的代码不直接使用WeakReference
,我自己从不创建。
什么可能导致创建这么多WeakReference
个实例?
我正在使用VB.NET,Visual Studio 2008和.NET 3.5
答案 0 :(得分:8)
是的,这是VB.NET程序集中相当臭名昭着的泄漏。它是由弱引用引起的,它跟踪使用WithEvents关键字声明的事件。完成此跟踪以支持“编辑并继续”。它为类中声明的每个WithEvents事件泄漏一个WeakReference实例。需要附加调试器才能释放那些WeakReference对象。
解决方法很简单。发布Release版本,而不是Debug版本。