探讨 Csharp 垃圾回收 与 手动清理效率?
抄了这几年代码,话说学而不思则罔,死而不学则殆。
最近在看别人代码,发现有这么一段
[解决办法]
其实差不多一样的效率,好像网上有人专门解释这个。就算赋值为null,也没有立刻释放内存,还是要等待垃圾回收线程去回收的。
[解决办法]
name = null 这个哪是垃圾回收
估计人家只是代码需要暂时赋值为null
楼主你想多了。
[解决办法]
MS一般不建议 手动去执行垃圾回收的 这样如果代码写的不好回去破坏自己的垃圾回收机制
gc.collection好像这个来进行回收的把
可以放在析构函数里面
[解决办法]
Net中,如果name只是string之类的托管类型,那样写并没什么意义
控制一旦超出局部变量的使用范围,会立即出栈被回收的
如果name是SqlConnection或者Win32中的非托管资源,直接name=null,不但不能提高效率,反而可能会导致内存泄漏。
必须Dispose等方式显示释放,垃圾回收器无法回收它们的。
[解决办法]
MSDN上说了,Net中不推荐析构,写不好反而会影响效率。推荐的做法是实现IDispose接口来处理