如题

解决方案 »

  1.   

    public void xxx() {
    Button b = new Button();......b = null; 
    }=================用到这里的时候 b 所占用的内存并没有释放。
    b是一个句柄,他的生命周期是从创建时开始,到这个方法结束时回收。b = NULL;
    这样写,就把 原来b与原来他指向的对象给隔离了。
    目的是为了让gc尽快地将b原来指向的那个对象清理掉。至于b自己,还是上面所说的 方法结束时回收
      

  2.   

    手动将引用设为null对gc有帮助 帮助就在于告诉gc,b现在不指向任何东西,这样new Button()所创建的堆内存就和句柄分开了。gc一看,原来是个没人要的东西,赶紧回收了吧。
      

  3.   

    谢谢楼上的。
    不过还有一点疑问,
    早些时候的GC采用的是引用计数算法,而现在的JVM大都用对象遍历算法
    无疑在引用计数算法下,手动置NULL对GC帮助很大,那么在现用的对象遍历法下,是否存在无人使用的引用指向该对象,还对GC有帮助呢??