从哪一步开始实现垃圾回收?

public class Garbage {
public static void main(String[] args) {
Example exampleOne = new Example(); //step 1
Example [] exampleArray = new Example[1];//step2

    exampleArray[0] = exampleOne;//step3
    exampleOne = null;//step4
    exampleArray[0]= null;//step5
}

}

class Example{
public Example(){
}
}

是不是step5?为什么??

另外,一个对象数组里面的全部对象为null了,那数组会被回收吗??

[quote]是不是step5?为什么??

另外,一个对象数组里面的全部对象为null了,那数组会被回收吗??[/quote]
不是step5,但是基本都在step5之后。垃圾回收普遍的判断是,这个对象没有引用了,也就是说等于null,但此时还不会马上回收,只是说做好了回收的准备,已经把这个exampleOne变量放入了待回收的区域里了。
垃圾回收的发生是不可预料的,你既不能控制它发生的时间,也不能知道它的时间,是由java垃圾回收器统一调用。

java中的垃圾回收和c++不一样,c++需要显示的收集,但java不用,这也是java为什么简化了部分编程的由来,而且更加健壮(因为C++程序员老是忘记释放)。但是呢,从另外一点来说,正是由于java把这个做的太过智能,所以也减少了我们从内存释放来优化程序的最大途径,但是只要我们减少垃圾变量的声明和使用,垃圾一般会在最短的时间内被清空。而且即使这个对象不用了,也不用手动设置成null。
希望我的回答对你有帮助,不懂的可以站内问我。