黑马程序员技术交流社区

标题: 为什么要手动调用conn.Dispose() [打印本页]

作者: 李帅    时间: 2012-8-2 13:39
标题: 为什么要手动调用conn.Dispose()
为什么要手动调用conn.Dispose()             .NET程序不是自动垃圾回收的吗

作者: 蔡尚猛    时间: 2012-8-2 14:10
我只知道.NET程序自动垃圾回收机制只能释放托管内存,非托管内存还要手动释放,
作者: 许庭洲    时间: 2012-8-2 14:38
1,.Net垃圾回收器采用的是一种叫做“标志紧缩”(Mark and Compat)的算法。
2,每当垃圾收集开始,.Net垃圾收集器从运行时目前的根对象(包括全局对象,本地对象,静态对象,CPU寄存器对象),开始寻找那些被根对象引用的所有对象,这些对象便是在垃圾收集时运行时正在应用的对象;
3,除去这些,其他的受管运行时对象(Managed Runtime Object)便是系统不再使用的对象,于是便可以进行垃圾收集;
4,Dispose无法显式释放托管堆内存﹐它们永远是微软的"私人财产 ",只有垃圾回收器能做到;Dispose()能让你手动释放其非托管资源的内存,是必要的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2