处理C#, JAVA内存泄漏的方法

王朝c#·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

大多数的程序员(特别新手)以为:用这样的语言编程的一个好处就是无需再考虑内存的分配和释放。你只需创建对象,然后通过一种叫做垃圾收集的机制来处理这些对象,也就是说:当它们不再被应用程序需要的时候来自动的清除这些对象。这个过程意味着Java或C#解决了其它语言中极难处理的问题──可怕的内存泄露。是这样吗?

其实不然,让我们先了解一下垃圾收集的工作原理。垃圾收集器的工作就是寻找那些不再被应用程序需要的对象,当它们不会再被访问或引用的时候清除它们。(注意是在不会再被访问或引用的时候才清除它们)

例如:class A 引用 class B的实例

class B

{

}

class A

{

B refB = new B();//在这里开始引用了

//这样在class A 的整个生命周期内,refB所占的内存空间将不会得到释放

//因为垃圾收集器会一直认为实例B一直被refB引用

}

正确的处理方式是

class A

{

B refB = new B();//在这里开始引用了

//使用了refB一段时间后

//如果下面的程序不在需要refB,那么就将它设置为null

refB = null; //这样垃圾收集器就会将实例B所占用的内存空间回收掉

}

所以我们需要明确的极为关键的一点是:一个对象只有当它不再被引用的时候才会被当作是无用的。

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航