谁能告诉我
- 分配
null
有什么好处?使用后变量? - 赋值
null
的含义是什么?处理完物体后? - GC 是如何工作的?
提前致谢
最佳答案
当您将
null
(C#) 或Nothing
(VB) 分配给变量时,会删除对先前分配的对象的引用。一旦不再有对某个对象的引用,它就可以进行垃圾回收,即将其占用的内存返回给系统。与 1 相同。处置对象会释放该对象所持有的所有托管或非托管资源。出于这些目的,该对象占用的内存不被视为资源。
GC 的作用远不止于此,GC 的目的是将未使用的内存返回给系统进行重新分配。仅当不再有对该对象的托管引用时,它才能回收该对象占用的内存,这就是为什么在不再使用该对象时将长期存在的变量清空很重要的原因。局部变量很少被认为是长期存在的,因为一旦方法完成它就会失去作用域。长生命周期变量的一个很好的例子是 WinForms 应用程序启动表单中的字段,该字段在应用程序的几乎整个生命周期中都保持在范围内。 如果一次性对象已被释放,它也只能回收该对象所占用的内存。这就是为什么在使用完一个对象(如果它支持处置)后将其处置是很重要的。如果不这样做,GC 第一次尝试回收对象占用的内存时将无法回收。它必须首先完成对象,然后处理它,然后再次尝试回收内存。
关于c# - 是将 null 赋给变量强制释放内存或处置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36594318/