c# - 是将 null 赋给变量强制释放内存或处置变量

标签 c# vb.net

谁能告诉我

  1. 分配 null 有什么好处?使用后变量?
  2. 赋值 null 的含义是什么?处理完物体后?
  3. GC 是如何工作的?

提前致谢

最佳答案

  1. 当您将 null (C#) 或 Nothing (VB) 分配给变量时,会删除对先前分配的对象的引用。一旦不再有对某个对象的引用,它就可以进行垃圾回收,即将其占用的内存返回给系统。

  2. 与 1 相同。处置对象会释放该对象所持有的所有托管或非托管资源。出于这些目的,该对象占用的内存不被视为资源。

  3. GC 的作用远不止于此,GC 的目的是将未使用的内存返回给系统进行重新分配。仅当不再有对该对象的托管引用时,它才能回收该对象占用的内存,这就是为什么在不再使用该对象时将长期存在的变量清空很重要的原因。局部变量很少被认为是长期存在的,因为一旦方法完成它就会失去作用域。长生命周期变量的一个很好的例子是 WinForms 应用程序启动表单中的字段,该字段在应用程序的几乎整个生命周期中都保持在范围内。 如果一次性对象已被释放,它也只能回收该对象所占用的内存。这就是为什么在使用完一个对象(如果它支持处置)后将其处置是很重要的。如果不这样做,GC 第一次尝试回收对象占用的内存时将无法回收。它必须首先完成对象,然后处理它,然后再次尝试回收内存。

关于c# - 是将 null 赋给变量强制释放内存或处置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36594318/

相关文章:

c# - 是否可以将变量转换为存储在另一个变量中的类型?

c# - 比较两个不同表中的列

c# - 数据库中已经有一个名为 'tableName' 的对象

c# - 使用 JToken.Parse 解析 JSON - 帮助我将一行代码从 C# 转换为 VB

c# - 如何在VB.NET中实现GetStableHash方法

vb.net - 如何防止在 XML 文字 (VB.NET) 中嵌入表达式的 HTML 编码?

vb.net - 停止使用 VB6?

c# - 是由偏离水平面大于 45 度的两点组成的线

c# - 将对象保存到没有序列化属性的文件的最简单方法是什么?

asp.net - VB.NET Web 窗体项目引用问题