加载中…
个人资料
水天一
水天一
  • 博客等级:
  • 博客积分:0
  • 博客访问:5,941
  • 关注人气:7
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
正文 字体大小:

GC.Collect()与.dispose()之间的区别

(2006-07-25 13:06:55)
标签:

杂谈

分类: MSN搬家
      上周,我使用webBrowser打开了一个word文档,但调用this.webBrowser.Dispose()方法,word进程结束,而使用this.webBrowser = null, GC.collect(),word进程并不能正常退出。
      问题的根源在于GC.collect()是清理内存资源的,而并不会去释放那些unmanaged resource.
      Dispose()方法用于是释放那些unmanaged resource,当调用完Dispose()方法以后,object就仅仅包含managed resource,当对象不再被引用时将由GC负责把它remove掉。所以Dispose()方法仅仅是释放资源但是它并没有强制释放对象本身。
     当直接去除引用,而没有显示释放资源时,我们就有两件事会发生:
    1)对象如果有finalize方法,那么可能在finalize时释放资源。并且object本身将在下一次GC 开始时被回收。
    2)对象如果没有finalize方法,那么unmanaged resource 将得不到释放。
      所以如果我们想显示释放资源应该调用Dispose()方法。

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有