此問題取自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