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包裝器對象 。哪些對象符合GC要求?
當我執行代碼時,它看起來像c3也指向null ...所以我會說3個對象符合GC的條件。
有人可以引導我通過這段代碼的邏輯。
或簡單地說:在該代碼中,只有兩個'new'關鍵字的情況,並且它們僅被執行一次在主要方法中,而不是在迭代中)因此,根據定義,這個代碼只能創建兩個對象,它怎麼能收集更多的數據呢? – 2010-09-08 11:37:44
@Joeri,毫無疑問,你是對的,但要推斷出這個數字並不容易只有讀取代碼時纔有可能發生錯誤 – 2010-09-08 11:42:03
當然,這是一個很好的指標,但是強引用更重要,我完全同意,只是在這種情況下,代碼非常簡單,你甚至不需要進一步觀察,但仍然是一個很好的練習 – 2010-09-08 11:58:33