【发布时间】:2012-07-19 15:27:18
【问题描述】:
这个问题来自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 条件?
- 答:0
- 乙:1
- C: 2
- D:编译失败
- E:不可能知道
- F: 运行时抛出异常
答案:
- C 是正确的。只有一个 CardBoard 对象 (c1) 符合条件,但它有一个关联的
Short包装对象也符合条件。 - A、B、D、E 和 F 根据上述不正确。 (目标 7.4)
【问题讨论】:
-
严格来说
c3不能满足GC,因为它不是一个对象。它是一个变量,可以指向一个对象。 -
正确答案是all of them...