关于using和System.GC.Collect()对于释放资源的讨论!
如题。。。
以最简单的释放窗体资源为例
可以通过using(){}实现资源释放
也可以在form.FormClosing的时候 通过System.GC.Collect()释放资源
可是区别在哪呢
------解决方案--------------------using 是即时释放.
------解决方案--------------------System.GC.Collect(),强制立即回收
using,系统会在适时的时候进行回收,不一定是立即
------解决方案--------------------非托管资源的托管示例,有许多其他类别的非托管资源和封装这些资源的类库类型。所有这些类型都必须实现 IDisposable 接口。
using(){}
对象不需要显示调用Dispose();
GC.Collect();遵循垃圾回收机制,分层回收
------解决方案--------------------如果你总是想要手动搞这个,那与.net设计的初衷和卖点就背道而驰了。
------解决方案--------------------
------解决方案--------------------GC.Collect是即时释放,而using只是在出了{}后告诉GC我是可以释放的资源,到底何时释放,得看GC
------解决方案--------------------
------解决方案--------------------using可以释放资源,GC释放内存,using完之后的内容就被标示了可以被GC,但是释放的时间不确定,可能就是下次GC运行的时候.不过,我也很想知道,Dispose以后的内容,其内存是被立刻释放了吗?还是等下次GC扫描呢?