社区
C#
帖子详情
何时使用Dispose托管资源
513
2003-09-12 06:32:04
用浏览器做客户端的系统,Connection应该是短连接,即每次连接检索完数据后,就断开了.
并且得到的页面也是新的,是无状态的方式.那么我们使用DataSet.Dispose().是否没有必要.我认为托管的资源应该是GC自动管理的,而且是经过优化的.我们每次检索完就Dispose()可能破坏优化,反而可能使性能下降.不知我的观点是否正确,请指点!
...全文
44
6
打赏
收藏
何时使用Dispose托管资源
用浏览器做客户端的系统,Connection应该是短连接,即每次连接检索完数据后,就断开了. 并且得到的页面也是新的,是无状态的方式.那么我们使用DataSet.Dispose().是否没有必要.我认为托管的资源应该是GC自动管理的,而且是经过优化的.我们每次检索完就Dispose()可能破坏优化,反而可能使性能下降.不知我的观点是否正确,请指点!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xhan2000
2003-09-13
打赏
举报
回复
...Dispose()会自动调用close方法
垃圾回收有不确定性,推荐使用dispose
xz_king
2003-09-13
打赏
举报
回复
有必要,如果10000人同时连接,而你不释放资源,想想当时会有多少RAM被占用。
个人推荐使用:
using( SqlConnection conn = new SqlConnection){
conn.open() ;
...
conn.close() ; // 如果你忘了close, 这个代码结束时,conn也会自动回收了。
....
}
layershow
2003-09-13
打赏
举报
回复
建Connection
.Open();
取
.Close();
...Dispose()
等等....
只要有了这个操作过程(以上没问题吧?).我再用代码恢复数据库都是说数据库正在被使用
意思是资源没有被释放.
但是一关掉程序,资源马上被释放掉.有兴趣可以试试
假想一个例子
//Connection 完成
Command myCmd = new Command();
myCmd.CommandText = "...";
myCmd.Execute...();
myCmd = new Command();
myCmd.CommandText = "...";
myCmd.Execute...();
myCmd.Dispose();
// 关闭
// Connection
Command myCmd = new Command();
myCmd.CommandText = "...";
myCmd.Execute...();
myCmd.CommandText = "...";
myCmd.Execute...();
myCmd.Dispose();
// 关闭
前一个是建了两个Command实例,而第一个的Dispose没有被显式调用.估计是由GC完成吧?
它的生存期是多长我也不清楚.至少已经没有加在它上面的引用了,这可能也是GC判断是否回收
的一个标准吧?
第二个只建了一个Command实例,并且使用多次,不再使用的时候,才将它释放掉
这是我的理解,我说有点含含糊糊,也请高手指正.
ArLi2003
2003-09-13
打赏
举报
回复
我也觉的有必要,GC 是定时性或者被动解发的
你可以试试在析构里验证一下你清掉那个class 之后要多久才会执行到析构
cnhgj
2003-09-13
打赏
举报
回复
有必要,释放资源
dragonsuc
2003-09-12
打赏
举报
回复
看看Applied Microsoft .NET Framework Programming
你了解更深入
你的看法是正确的
c#中的非
托管
资源
释放 (Finalize和
Dispose
)
c#中的非
托管
资源
释放 (Finalize和
Dispose
),在了解Finalize和
Dispose
之前,我们需要了解两个概念,一个是
托管
资源
,一个非委托
资源
探讨C#中
Dispose
方法与Close方法的区别详解
简单的说来,C#中的每一个类型都代表一种
资源
,而
资源
又分为两类:
托管
资源
:由CLR管理分配和释放的
资源
,即由CLR里new出来的对象;非
托管
资源
:不受CLR管理的对象,windows内核对象,如文件、数据库连接、套接字、
C#
资源
释放方法实例分析
本文实例讲述了C#
资源
释放方法。分享给大家供大家参考,具体如下: 1、try{}finally{} 2、using 只有类型实现了...2.此接口的主要用途是释放非
托管
资源
。 当不再
使用
托管
对象时,垃圾回收器会自动释放分配给该对
C#中标准的I
Dispose
模式代码详解
C#实现I
Dispose
接口 .net的GC机制有两个问题:首先GC并不能... //调用带参数的
Dispose
方法,释放
托管
和非
托管
资源
Dispose
(true); //手动调用了
Dispose
释放
资源
,那么析构函数就是不必要的了,这里阻止GC调用析构
C#多线程开发多个实例
//将释放非
托管
资源
设计成一个虚函数,提供在继承类中释放基类的
资源
的能力 protected virtual void ReleaseUnmanageResources() { //Do something... } //私有函数用以释放非
托管
资源
private void
Dispose
...
C#
110,531
社区成员
642,573
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章