下列代码第三行被创建的对象,在什么时候可以被回收

1.public class X {
2.public object M() {
3. Object o = new Float(3.14f);
4. Object[] oa = new Object[1];
5. oa[0]=o;
6. o=null;
7. oa[0]=null
8. return o;
9. }
10.}

A. 第5行以后
B. 第6行以后
C. 第7行以后
D. 第8行以后

C. 第7行以后 :

[code="java"]public class X {
public Object M() {
Object o = new Float(3.14f);// o----------> new Float(3.14f)
Object[] oa = new Object[1];
oa[0] = o; // o----------> new Float(3.14f) <--------------- oa[0]
o = null; // o----------> null , oa[0]---------------> new Float(3.14f)
oa[0] = null;// o----------> null , oa[0]---------------> null , new Float(3.14f) 到这一步,这个对象不再有任何引用了,也就是成了垃圾对象了
return o;
}
}[/code]

C,对象没有任何引用指向它的时候才会回收

[code="java"]
public class X {
public object M() {
Object o = new Float(3.14f);
Object[] oa = new Object[1];
oa[0]=o;
o=null;//这里之后oa[0]还是持有那个对象的引用
oa[0]=null//这里之后才能被回收
return o;
}
10.}
[/code]