A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马-金鑫 中级黑马   /  2012-9-8 19:18  /  1891 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

除了SqlConnection  SqlCommod  Stream  还有哪些需要手动释放资源?

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

4 个回复

倒序浏览
using(SqlDataReader rdResult = SqlCommand.ExecuteReader())//表明SqlDataReader 也需要手动释放资源

        
回复 使用道具 举报
调用Dispose可以手动释放资源,你可以在Dispose中释放你的资源。
这样并不是说资源已经释放掉了,而是告诉Net的垃圾回收机制,这些资源需要释放,具体的释放工作还是垃圾回收机制来做。
如果不调用Dispoe,net无法明确的知道是否要释放你的资源,这样在资源的释放上会有延迟。当然资源最终还是会被释放掉的。
在CLR收集垃圾之前,你还可以可以利用Dispose()方法做一些其他事情,比如关闭数据库连接,关闭文件流等等

这里我感觉你对dispose的理解有点误差。
我感觉dispose是明确告诉.NET哪些东西没有用需要回收,而不是利用这个方法去回收.NET不去回收的东西。


个人意见啊,欢迎讨论。
回复 使用道具 举报
应该是用NEW运算符生成的空间,都需要吧
回复 使用道具 举报
实现了IDisposable接口的都需要自己手动释放。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马