C# Nut Shell 第十二章 销毁对象与垃圾回收

IDisposable接口、Dispose方法和Close方法

using语句提供了调用实现了IDisposable接口对象的Dispose方法的快捷方法。相当于实现了try/finally语句

标准销毁语义

1.对象一旦被销毁就无法恢复,调用方法会异常

2.可以重复调用Dispose,不会报错

3.会自动循环调用Dispose

4.一般非托管代码都需要销毁代码来释放资源,文件,套接字

5.当在Dispose自定义了某些操作后,可以选择性的执行这些操作,相当于就是在类中添加一个bool属性,在Dispose中判断这个属性来决定是否要执行某些操作

6.Dispose本身并没有释放内存,只有在垃圾回收时才会释放内存

7.在Dispose中可以将字段设置为null,也可以取消事件的订阅。还可以定义一个IsDispose的属性


自动垃圾回收

1.垃圾回收在不引用对象后不是立即回收的,而是周期性进行的,根据某种策略来执行。

2.垃圾回收也不是一次性回收所有的未引用变量,而是先回收新的未引用变量。旧的来不及就先不回收了

1.根可以保存对象的存活,如果没有被根直接或间接的引用,则表示可以被GC

2.根的种类

1.当前正在执行的方法(子方法)中的局部变量或者参数

2.静态变量

3.终结队列中的对象


终结器

1.若对象拥有终结器,则在对象从内存中释放之前,会执行终结器。(析构函数)

2.如果是可以被删除的对象,如果没有终结器则会被直接删除&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值