问题描述
为什么Conn.Dispose()之后,用Response.Write(Conn==null)的结果是False而不是True呢?
解决方案
解决方案二:
已经释放了为什么还是false我也想知道
解决方案三:
同意楼上Conn.Dispose()语句已经释放了
解决方案四:
还没真的释放
解决方案五:
那是啥意思?我就担心这个Conn对象会把内存耗尽而导致网站速度很慢
解决方案六:
whycomwhycom等级:发表于:2007-10-1719:03:526楼得分:0dispose只是为了释放托管类中的非托管资源,并不是释放托管本身那么Conn对象怎么样才能释放并销毁掉呢?由垃圾处理器来释放?
解决方案七:
是的~
解决方案八:
晕...那还要Dispose干嘛?实在有点费解,Conn是不是托管资源呢?Conn.Dispose之后这个Conn对象还占不占内存?如果不占内存了,那Conn对象放在哪里啊?
解决方案九:
你的Conn.Dispose()有点儿多余,没起什么作用,本来就是托管,你没必要去考虑其资源释放。至于Dispose()方法的作用,个人认为,在一些特殊情况下才能用到,一般情况没必要。反正我从来没用过。
解决方案十:
close不就行了吗在finally里为什么非要释放呢
解决方案十一:
我是因为做过一个网站,速度特别慢,尤其是访问人数一多就很慢很慢,才怀疑是不是因为Conn对象太多没释放导致的?我现在理解是不是Dispose()之后,就会"唤醒"垃圾回收来回收对象,而当时Response(Conn==null)的结果因为垃圾回收还没启动或是我们不知道何时启动,才是False?
解决方案十二:
托管程序不需要管理资源释放。C#的析构函数也是摆设。为什么网站的Conn对像会太多?难道你设计的网站为每个Session建一个Conn?不是整个网站用一个Conn吗?ASP.NET里面用无连接的数据处理方法写程序速度会快很多.多用存储过程吧.
解决方案十三:
用过Dispose就可以了
解决方案十四:
我现在理解是不是Dispose()之后,就会"唤醒"垃圾回收来回收对象-------要<"唤醒"垃圾回收来回收对象>需要强制调用垃圾回收GC.Collect();
解决方案十五:
楼上正解
解决方案:
Dispose只是释放conn所引用的资源,如ConnectionString等等而conn还是指向堆中那块内存区的,只是那块区域没有内容而已,所以conn不为null等到出了这段程序以后,conn为null,垃圾回收器才会将conn所引用的那块内存回收个人理解
解决方案:
学到东西了,我可能做ASP太久了,变成了定性思维,写一个方法就在一个方法里建立一次并且DISPOSE一次CONN对象....至于怎么"一个网站里只用一个Conn",我还真不会?
解决方案:
我的理解是不是暂时没释放掉引用,也不知道G.C什么时候回收垃圾,所以立即结果是FALSE