SCJP第三章中有一个问题。
请参见以下代码:

public class Sample_1 {


    Short story = 200;

    Sample_1 go(Sample_1 sample){
        sample = null;
        return sample;
    }

    public static void main(String a[]){
        Sample_1 sample1 =new  Sample_1();
        Sample_1 sample2 =new  Sample_1();
        Sample_1 sample3 = sample1.go(sample2);

        sample1 = null;

        //DO STUFF

    }

}


问题:在//DO STUFF行中有多少个对象可用于GC?

选项:
0
1个
2
编译失败
不知道
在运行时引发异常

书中说:正确的答案是2。它说:“只有一个Sample_1对象(sample1)可用于GC,但它具有关联的Short值。因此,有两个对象可用于GC”

仍然无法理解这个答案。我们已经为空sample1对象。我认为没有GC的对象。

任何的想法?

最佳答案

由于sample1为null,因此分配给sample1的内存及其包含的Short变量可以进行垃圾回收。

07-24 20:30