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变量可以进行垃圾回收。