有如下代码:public void foo() {
List list = new ArrayList();
Obj o1 = new Obj();
Obj o2 = new Obj();

list.add(o1);
list.add(o2);

o1 = null;
o2 = null;

Obj o3 = list.get(0);
list = null;
}请问该段代码中的o2最终会被垃圾回收器回收吗?

解决方案 »

  1.   

    答案是肯定.当执行o2 = null;时,o2就没有任何对象跟它关联了,此时,o2也就是垃圾回收器的回收对象,但此时不一定别回收,因为不确定GC是否在工作,假如正在工作,马上会被回收掉;假如GC还没有运行,o2就会一直存在,直到GC运行.
      

  2.   

    ls正解,GC的优先级是比较低的
      

  3.   

    foo方法结束时o3所引用的对象会不会被gc回收呢?
      

  4.   

    java里面有什么方法可以在foo方法结束前手动释放掉o3所引用对象占用的内存?
      

  5.   

    回复人:ieo2004(ieo) ( 一级(初级)) 信誉:97  2007-3-22 11:16:24  得分:0
    ?  java里面有什么方法可以在foo方法结束前手动释放掉o3所引用对象占用的内存?
    Top--------------------------无能为力,不敢保证。