C# IDisposable接口 与析构函数

GC 自动回收 托管资源 但是因为标记并清除 方式 以及 垃圾对象的1代2代,并不是及时清理,那么问题来了

1.非托管资源怎么回收

2.托管资源怎么立马回收

非托管资源可以使用 析构函数 ~class 这样 GC回收的时候会去识别析构来进行一个非托管资源的释放 注意 因为还是GC 处理 还是不是及时 处理的 有GC的机制来决定

那么要立即回收 托管资源 和非托管资源 怎么办?

IDisposable 接口就是为了解决这个

在你需要手动控制回收的资源 类 继承IDisposable

接口有个方法 dispose 在你释放是直接 Class对象.dispose()

还有一种便捷写法 就是 在 代码段 外层 使用using{} 达到同样效果

那什么业务情况才会需要手动释放资源呢?

socket 连接 断开等 句柄资源 数据库连接资源 客户端连接断开日志资源清空等

相关推荐
z_mazin2 分钟前
JavaScript Hook XMLHttpRequest操作:逆向与调试实战指南
开发语言·javascript·ecmascript
qq_365911603 分钟前
WPF 资源加载问题:真是 XAML 的锅吗?
开发语言
魔道不误砍柴功9 分钟前
Jakarta EE 11发布:云原生Java企业应用的新标准
java·开发语言·云原生
小郝 小郝16 分钟前
【C语言】内存函数
c语言·开发语言
cheryl8829 分钟前
Python+Requests 企业级接口测试入门(1~3天)
开发语言·python
Spring-wind33 分钟前
【golang】为什么协程开销小于线程
java·开发语言·golang
Yang-Never39 分钟前
Open GL ES -> SurfaceView + 自定义EGL实现OpenGL渲染框架
android·开发语言·图像处理·android studio
wjs20241 小时前
Perl 发送邮件
开发语言
大刘讲IT1 小时前
构建实时、融合的湖仓一体数据分析平台:基于 Delta Lake 与 Apache Iceberg
开发语言·python·sql·mysql·数据挖掘·数据分析·json
冯韶晗2 小时前
Scala语言的区块链
开发语言·后端·golang