Line 5 生成一个局部的对象o
Line 6 把上一句生成的对象o传入doSomethingElse()方法,赋给了属性o
Line 7 又生成一个局部对象o
Line 8 调用doSomethingElse()方法,传入null,使属性o为null,从而使对Line 5生成的局部对象的引用为空,这时就可回收了。

解决方案 »

  1.   

    我觉得doSomethingElse方法set的是line 2的o,所以line 5创建的o并没有被回收。
      

  2.   

    line2的o指向了line5的o,所以line5的o暂时不会被回收
      

  3.   

    我认为,这种强引用类型,是将引用设为null后,gc会回收;若不设为null,过程过一段时间也会回收。
      

  4.   

    到第七行的时候,第五行创建的对象就只有一个引用了,那就是第二行的o;第八行把第二行的o设置成null,到此,第五行的对象就没有任何引用变量引用了,可以回收了。