此问题取自Kathy SierraSCJP 1.6。有多少个对象符合垃圾回收的条件?有资格垃圾回收的对象
根据Kathy Sierra的回答,它是C
。这意味着两个对象有资格进行垃圾回收。我已经给出了答案的解释。 但为什么c3
不符合garbage collection(GC)的资格?
class CardBoard {
Short story = 200;
CardBoard go(CardBoard cb) {
cb = null;
return cb;
}
public static void main(String[] args) {
CardBoard c1 = new CardBoard();
CardBoard c2 = new CardBoard();
CardBoard c3 = c1.go(c2);
c1 = null;
// Do stuff
} }
当达到// Do stuff
,有多少个对象资格GC?
- A:0
- B:1
- C:2
- d:编译失败
- E:这是不可能知道
- F:一个例外是在运行时引发
答:
- C是正确的。只有一个CardBoard对象(c1)符合条件,但它具有相关联的
Short
包装器对象,该对象也符合条件。 - 基于上述内容,A,B,D,E和F不正确。 (目标7.4)
严格来说'c3'不能符合GC的条件,因为*它不是一个对象*。它是一个变量可以指向一个对象。 – 2012-07-19 15:35:48
正确的答案是[所有人](http://stackoverflow.com/a/26645534/2711488)... – Holger 2016-05-02 09:10:49