这个问题取自Kathy Sierra SCJP 1.6。有多少对象符合垃圾回收条件?
根据 Kathy Sierra 的回答,它是C
. 这意味着两个对象有资格进行垃圾回收。我已经给出了答案的解释。但是为什么c3
不符合垃圾回收(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)