第十二章 垃圾回收与资源管理
一、对象与内存
1.对象的生命周期
①垃圾回收(garbage collection)
·对象的铲除和归还内存给堆的过程叫做垃圾回收
·析构函数是实现销毁一个类的实例的方法成员
·析构函数是用于执行清楚操作的特殊方法
·CLR控制垃圾回收
2.析构函数
·有析构函数的对象占用的资源是较多,因为即使不需要它们,它们仍然会在内存中驻留较长时间,销毁过程作为独立的线程执行,该线程会占用大量资源
二、垃圾回收器
①垃圾回收器可以保证:
·每个对象都会被铲除,其析构函数都会被调用
·每个对象都被精确的铲除一次
·每个对象只在不被引用时被铲除
②垃圾回收器工作时间(自动控制):
·垃圾回收器只在对象不再需要的时候开始工作,但不是立即
·当它认为有用内存较少时
·当有一条命令需要分配很大的内存时
·可以通过程序调用System.GC.Collect()启动垃圾回收器
③垃圾回收器的工作机制
三、资源管理
1.资源释放
①垃圾回收器释放的是托管资源
②非托管资源需要手动释放
·使用Disposal()方法
·使用finally释放资源:用于异常时安全释放资源
·使用using释放资源:可以在达到using语句的末尾时,或者在该语句结束之前引发了异常并且控制权离开语句块时,退出using语句。可以有多个对象与using语句一起使用,但是必须在using语句里面声明。在using语句中声明的对象必须是实现了IDisposable接口的。
·Dispose方法是public,可以在任何事件中调用
转载于:https://blog.51cto.com/pein7/368825