Chinaunix首页 | 论坛 | 博客

acc

  • 博客访问: 792100
  • 博文数量: 170
  • 博客积分: 7011
  • 博客等级: 少将
  • 技术积分: 1660
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-31 12:02
文章分类

全部博文(170)

文章存档

2014年(7)

2010年(2)

2009年(62)

2008年(25)

2007年(67)

2006年(7)

我的朋友

分类: Java

2008-06-05 16:25:18

处理JAVA内存泄漏的方法

   大多数的程序员(特别新手)以为:用这样的语言编程的一个好处就是无需再考虑内存的分配和释放。你只需创建对象,然后通过一种叫做垃圾收集的机制来处理这些对象,也就是说:当它们不再被应用程序需要的时候来自动的清除这些对象。这个过程意味着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所占用的内存空间回收掉

         }

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

         {

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

             //使用了refB一段时间后

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

            

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

         }

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

阅读(884) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~