【发布时间】:2010-09-05 09:23:31
【问题描述】:
完成后,是否应该将所有对象设置为null(VB.NET 中的Nothing)?
我了解在 .NET 中,必须释放实现 IDisposable 接口的任何对象实例以释放一些资源,尽管对象在释放后仍然可以是某物(因此表单中的 isDisposed 属性),所以我认为它仍然可以驻留在内存中或至少部分驻留在内存中?
我也知道,当一个对象超出范围时,它会被标记为为垃圾收集器的下一次传递做好准备(尽管这可能需要一些时间)。
因此,考虑到这一点,将其设置为 null 会加快系统释放内存的速度,因为它不必确定它不再在范围内,它们是否有任何不良副作用?
MSDN 文章在示例中从不这样做,目前我这样做是因为我做不到 见害处。但是我遇到了各种各样的意见,所以任何 cmet 都是有用的。
【问题讨论】:
-
+1 好问题。有谁知道编译器会完全优化分配的情况?也就是说,有没有人在不同的情况下查看过 MSIL,并注意到 IL 将对象设置为 null(或缺少)。
标签: c# .net vb.net memory-management null