标签:style class blog code http tar
一般程序员()都会这样认为:用C#这样的语言编程的一个好处就是无需再考虑内存的分配和释放。你只需创建对象,然后通过一种叫做垃圾收集的机制来处理这 些对象,也就是说:当它们不再被应用程序需要的时候来自动的清除这些对象。这个过程意味着C#解决了其它语言中极难处理的问题──可怕的内存泄露。真的是 这样吗?
其实不然,让我们先了解一下垃圾收集的工作原理。垃圾收集器的工作就是寻找那些不再被应用程序需要的对象,当它们不会再被访问或引用的时候清除它们。(一定要注意是在不会再被访问或引用的时候才清除它们)
一个对象只有当它不再被引用的时候才会被当作是无用的 ,所以我们在声明对象和定义变量的时候最好是在定义的时候 给一个NUll,
如果 到本行代码以后不会再使用这个对象了, 请把它设置为Null
例如
这样做很明显是不合理的,因为你也不知道在使用的过程 中到低会不会加载数据,当然这样确定 不会再出现未对对象引用到对象实例这样的错误 了,
当然也说明了一个问题,这样做是不合理的,正确的应该是这样
而当使用的时候 再给其真正的值。
当不再使用的时候 应该给其一个Null
当明白了它的回收机制之后我想我们应该知道 怎么样去做了,当然有的程序 员会说没有时候这样写,呵呵 ,其实我感觉 代码的规范还有合理不合理,和时间真的没有太大关系 是个人的习惯而已,当你写的习惯了也就不感觉 不舒服了,而且 会喜欢上规范的代码 ,因为程序以后的路大多都 是在抄前面写的代码,如果 你之前都 写的很棒了,那为以后的发展帮助会是巨大的。
发文后说明
老赵说的是,我做过试验,还有 Anders Liu 所说的”代“
一种是:
GC.Collect() 这种方法对所有的代进行回收
另一种是:
GC.Collect(int) 这种方法对0、1、2代,指明的代进行回收。
我测试了一下,内存有时候确实有变化但不是太明示,不过也有,我记录下来的内存变化,发现
,在有的时候 设置Dispos()方法或Close()方法时,如果不使用using或try{} finally{}进行释放,如果没有进行有效释放的话,会导制对象进行二次回收 .这样一下反而是得不尝失了。
标签:style class blog code http tar
原文地址:http://www.cnblogs.com/newsouls/p/3790920.html