【发布时间】:2010-09-08 10:39:49
【问题描述】:
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);
System.out.println("c3 value : "+c3);
c1 = null;
System.out.println("c1 value : "+c1);
System.out.println("c2 value : "+c2);
// do Stuff
}
}
这是 SCJP6 模拟考试的一个示例。问题是:当达到 //doStuff 时,有多少对象符合 GC 条件?答案是(2 个对象),因为:只有一个 CardBoard 对象 (c1) 符合条件,但它有一个关联的 Short 也符合条件的包装对象。
当我执行代码时,看起来 c3 也指向 null...所以我会说 3 个对象有资格进行 GC。
谁能指导我理解这段代码的逻辑。
【问题讨论】: