首先纠正一个观念,终结机制不等于垃圾回收。它只是代表当某个对象不再需要时,我们顺带要执行一些操作。更加像是附加了一种event事件。
所以网络上有一种说法,IDisposable是为了释放内存。这个观念并不准确。应该形容为一种兜底更为贴切。
如果是一个完全使用托管代码的场景,整个对象图由GC管理,那确实不需要。在托管环境中,终结机制主要用于处理对象所持有的,不被GC和runtime管理的资源。
比如HttpClient,如果没有终结机制,那么当对象被释放时,GC并不知道该对象持有了非托管资源(句柄),导致底层了socket连接永远不会被释放。
一张图带你了解.NET终结(Finalize)流程
未经允许不得转载:小狮博客 » 一张图带你了解.NET终结(Finalize)流程
相关推荐
- 痞子衡嵌入式:关于恩智浦SDK2.0里事务型中断处理函数(DriverIRQHandler)的重定向注意事项
- UWP 通过 .NET 9 和Native AOT 的支持实现 UWP 应用的现代化
- .NET周刊【11月第2期 2024-11-10】
- 为什么在EffectiveJava中建议用EnumSet替代位字段,以及使用EnumMap替换序数索引
- DDCA —— 大缓存、虚拟内存:多核缓存、NUCA缓存、页表等
- SQL Server 语句日期格式查找方法
- Python 如何根据给定模型计算权值
- Angular Material 18+ 高级教程 – Datepicker の Calendar & Custom DateAdapter (Temporal)