.net - 内存泄漏和弱引用

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

我的一个应用程序出现了一个看起来像内存泄漏的问题(该应用程序会随着时间的推移使用更多内存,大约一周后它会挂起)。

我已经检测并修复了一些与我编写的类相关的泄漏(比较使用 sos.dll 获取的堆转储很快就会发现它们),并且这些泄漏的数量不再增加。

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

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

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

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

最佳答案

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

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

关于.net - 内存泄漏和弱引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7917014/

相关文章:

c - 检测 Linux 上正在运行的进程的内存泄漏

c# - 如何指定只能从同一程序集的派生类访问的方法?

vb.net - 在 VB.NET 项目中使用 GeckoWebBrowser (v45.0.34.0)

Apple 代码中的 iPhone 内存泄漏

iphone - 为什么 Instruments "Leak"模板无法捕获我的 iOS 应用程序上的内存泄漏?

.net - 在 VB 中的自定义 Linq Provider 中实现字符串比较器

c# - 检测重叠周期的算法

java - 如何以编程方式查找传入 http 请求的地理位置?

.net - 连接到 SQL Server 2008 R2 Express 时出错

.net - 无法获取 .flv 文件的正确 mime 类型