垃圾回收(GC,Garbage Collection)
资源分为托管资源和非托管资源。托管资源由公共语言运行库处理和回收,无须干预;而非托管资源则须显式释放。
如何释放非托管资源?
方法有二:
1、析构函数
2、实现IDisable接口
析构函数是在对象被回收时触发,因此起不到在指定时点释放的效果;并且可能对性能有负面的影响。因为析构函数会被隐式地翻译为Finalize()方法,但垃圾回收器在回收时会只回收没有Finalize()的内存,而将有这个方法的内存对象标记为“准备终止”,留待下次回收。
实现IDisable接口的,则比较合理,可以随时调用,显式释放。
using(...)方式可以强制调用Disable方法。
GC回收的是垃圾,值类型无须回收,引用类型才需要。没有被引用的引用类型就是垃圾。