C# IDisposable接口 与析构函数

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

1.非托管资源怎么回收

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

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

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

IDisposable 接口就是为了解决这个

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

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

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

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

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

相关推荐
学习编程的gas几秒前
C++:STL中list的使用和模拟实现
开发语言·c++
今晚打老虎18 分钟前
c++之基础B(第一课)
开发语言·c++
wa的一声哭了19 分钟前
Python多进程并行multiprocess基础
开发语言·jvm·人工智能·python·机器学习·语言模型·自然语言处理
枫叶丹433 分钟前
【Qt开发】信号与槽(三)-> 自定义信号和槽
开发语言·qt
奔跑吧邓邓子43 分钟前
从0到1学PHP(三):PHP 流程控制:掌控程序的走向
开发语言·php·流程控制
R-G-B1 小时前
【31】C# WinForm入门到精通 ——保存文件SaveFileDialog 【属性、方法、事件、实例、源码】
开发语言·c#·c# winform·c#保存文件·savefiledialog
啊阿狸不会拉杆1 小时前
《Java 程序设计》第 11 章 - 泛型与集合
java·开发语言·jvm·数据结构·算法
小白要加油努力2 小时前
C++-STL-String重点知识
开发语言·c++
恣艺2 小时前
LeetCode 68:文本左右对齐
算法·leetcode·c#
OKkankan3 小时前
string类的模拟实现
开发语言·数据结构·c++·算法