Visual Basic 垃圾回收

3
在VB.NET中,当使用完对象后将其分配为Nothing仍然有用吗,就像这里提到的那样?或者垃圾回收已经改进到不再需要这样做了吗?

1
可能是重复的问题:C#:在什么情况下应该将引用设为null? - xanatos
3个回答

1
不,这在VB.NET中没有用。如果变量指向动态创建的COM对象(例如,如果您正在进行Office互操作),则应该只执行此操作。

1

你是对的,除了一些特殊情况外,它已经不再需要:

  • 消除循环引用(对象A引用对象B,对象B又引用对象A)可以正常工作,请参见注释。
  • 如果你正在使用VBScript。将这些对象设置为Nothing。

实际上,垃圾收集器对于循环引用的处理工作得非常好。 - MarkJ

1

就像其他人所说的,在大多数情况下是不必要的。

如果你使用完一个对象并希望尽快释放其内存(例如,因为它是一个包含许多其他对象的非常大的实体),请使其实现可处理模式并通过Using指令使用它。

在特定情况下,如果你的大对象没有引用任何非托管资源,这不是修复内存泄漏,而是保持内存占用小。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接