设为首页 加入收藏 网站首页
休闲娱乐
军事·社会百态·娱乐八卦·校园
体育·美女写真·幽默笑话·游戏
综合·在线视频·搞笑图片·灵异
两性生活
两性知识·性爱技巧
情色实录·两性图片
女性健康·同性之恋
电脑网络
网络编程·网页制作·软件教学
操作系统·图形图象·冲浪宝典
网络安全·邮件系统·认证考试
热点专题
芙蓉·真人漫画
72式·欲望都市
帅哥·人体彩绘
您现在的位置: 世纪中国 >> 网络编程 >> ASP.NET教学 >> asp.net技巧 >> 教程正文
.net内存回收与Dispose﹐Close﹐Finalize方法
作者:中国图霸    教程来源:网络    点击数:    更新时间:2007-1-1
21            Console.WriteLine("[Error]程序删除文件失败﹕{0}", ex.Message);
22        }
23    }
24}
 

13.有人举手﹐讲这么多﹐早告诉我调用fs.Close不就得了。
哥们﹐fs.Close()方法是由您写的﹐调不调用﹐手在您身上﹐您不调用的话﹐哪天程序出了问题﹐您有会叫﹕微软真垃圾﹐.net真不稳定﹐还是java好﹐安全﹐可靠...    为防您的国骂﹐MS只好在垃圾收集中加这一款﹐以防不测...

14.Dispose模式
认真查看.net类库中的那些基本类别﹐凡是有Finalize方法的类别﹐基本上都提供了诸如Dispose,Close,Dispose(bool)等方法(FileStream也不例外)

15.其实不管是Dispose,Close,Finalize方法﹐最终应该都是执行相同的代码
区别﹕
Finalize方法﹕只能由微软调用
Dispose和Close方法﹕提供给您调用
因此在您使用完那些类别后﹐那就直接调用Close吧(没有Close﹐再调用Dispose方法)﹐当然万一您忘了﹐也别担心﹐还有垃圾收集器帮您垫后。

七.第二个结论﹕
1.在您开发一个封装非托管资源(即类中的字段引用到了非托管资源)的类别时﹕
A:强烈建议您提供Finalize方法进行非托管资源的释放﹐.net垃圾收集器不会帮您自动回收那部分资源﹐而是通过调用您的Finalize方法来帮您释放。(这样可以保证﹕在使用您类别的那位程序员忘了手动回收内存时﹐还可通过垃圾收集器来补救)

B.强烈建议您提供一个Close或Dispose方法﹐以便使用您类别的程序员可以手动释放您的类别中的非托管资源。(参见.net框架程序设计 自动内存管理一章实现Dispose模式)

C.如果类别封装了像FileStream这样的对象(即对非托管资源的再次封装)时﹐一般也应该提供一 个Close或Dispose方法﹐除非您的这个成员保证在每次使用后﹐都被正常的关闭﹐即对调用者透明。

2.在您使用一个封装非托管资源的类别时﹕
A:强烈建议您在明确知道这个类别没有用之后﹐调用其提供的Close或Dispose方法手动释放其非托管资源的 内存。有道是﹕有借有还﹐再借不难;借了不还﹐再借休想~~

B:注意在手动释放后﹐不要再调用该对象的相关方法了﹐因为对象已经损毁了

再次BTW:不管是Finalize﹐Close还是Dispose﹐您都无法显式释放托管堆内存﹐它们永远是微软的"私人财产 "﹕)
http://www.cnblogs.com/tsoukw/archive/2006/12/08/586525.html

上一页  [1] [2] [3] [4] [5] 

分类推荐
社会 社会 娱乐 军事 校园
幽默 体育 女性 专题
电脑 编程 网页 软件 系统
安全 图象 冲浪 认证
搞笑 人物 动物 物品 表情
签名 色图 漫画 奇闻
美女 明星 清纯 自拍 欧美
丝袜 卡通 性感 走光
两性 知识 性图 孕育 技巧
同性 单身 情感 实录
视频 写真 搞笑 MTV 翻唱
写实 片段 游戏 综艺
asp.net技巧热门文章
普通教程 ASP.NET里常用的JS
普通教程 UpdatePanel与UrlRewrite
普通教程 .net内存回收与Dispose﹐Close
普通教程 用MasterPage 代替 PageBase
普通教程 DataSet 添加数据集、行、列、
普通教程 ASP.NET组件DataGrid的分页实用
普通教程 使用WebClient自动填写并提交A
普通教程 ASP.NET中水晶报表的使用
普通教程 对NDoc支持.net2.0的异常分析及
普通教程 关于ASP.NET调用javascrip
普通教程 MSBuild, NAnt, NUnit, MSTest
普通教程 asp.net 2.0 上传控件的使用
普通教程 UpdatePanel和自定义控件中的客
普通教程 ASP.NET—From验证:全部代码及
普通教程 自己写的一个asp.net的生成曲线
普通教程 js操作listbox
普通教程 ASP.NET 崩溃-SiteMap中疯狂的
普通教程 ASP.NET 2.0-选用DataSet或Da
普通教程 用.net 处理xmlHttp发送异步请
普通教程 ASP.Net 2.0 图形控件简述

  广东广州海珠区 世纪网络工作室 版权所有 上海电信提供网络带宽
信箱: 9297659@qq.com 粤ICP备06113754号