c# - .Net 中 finalize 的成本

标签 c# .net vb.net idisposable finalize

(1) 我读过很多关于 IDisposable 的问题,其中的答案建议不要使用 Finalize,除非你真的需要,因为涉及到处理时间。
我没有看到的是这笔费用是多少以及支付的频率。每毫秒?第二?小时、天等

(2) 此外,在我看来,当并不总是知道某个对象是否可以被处置时,Finalize 很方便。例如,框架字体类。控件无法处理它,因为它不知道字体是否共享。字体通常是在设计时创建的,因此用户不知道如何处理它,因此当没有引用时,finalize 开始最终摆脱它。这是正确的印象吗?

最佳答案

finalize 的主要问题是它会阻止对象被垃圾回收。取而代之的是调用终结器,并“在下一次运行时”收集对象。好吧,从技术上讲,IIRC 终结器在单独的线程中运行对象列表。无论如何,这不是一个“每毫秒”的问题,更像是一个“需要运行多次 GC 才能删除对象”的问题。

关于c# - .Net 中 finalize 的成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3045798/

相关文章:

c# - 无法获取模型的反射类型

c# - 使用类层次结构重载 - 大多数派生未使用

c# - 是否有实时 IIS 流量查看器(或通过 C# 以编程方式获取它的方式)

vb.net - Access 查询中的语法错误(缺少运算符)

javascript - 在 IE9 的每个打印页面上保留标题

c# - 从 C# 编码 "as string"参数

c# - 在 C# 中编码一个 char**

c# - 为什么我的公共(public)属性没有被 XmlSerializer 序列化?

c# - 如何对可观察集合进行排序?

mysql - 如何使用 vb.net 将字符串转换为 mysql 日期格式?