有一個在SCJP第三章... 看到下面的代碼...JAVA:要知道有多少對象資格GC
class Beta{
}
class Alpha extends Beta{
static Beta b1;
Beta b2;
}
class Tester{
public static void main(String a[]){
Beta b1 = new Beta();
Beta b2 = new Beta();
Alpha a1 = new Alpha();
Alpha a2 = new Alpha();
a1.b1 = b1;
a1.b2 = b1;
a2.b2 = b2;
a1 = null;
b1 = null;
b2 = null;
//DO STUFF
//HOW MANY OBJECTS ARE ELIGIBE FOR GC AT THIS LINE..
}
}
Q上的問題:如何有許多對象資格GC @行//做的東西
選項:
Option-1> 0
Option-2> 1
Option-3> 2
Option-4> 3
Option-5> 4
Option-6> 5
書上說:正確的ansert爲2:只有一個對象符合GC。
還是不能理解這個答案。只有一個對象可以符合GC的條件?
任何想法? Thanjan,Gunjan。 Thanx,Gunjan。
您認爲應該有多少物體可以被清除?爲什麼? –
FWIW,這是一個毫無意義的練習,因爲它需要一個與垃圾收集器實際工作方式無關的垃圾收集模型。 –
@JonHarrop我不同意。它確實會教你關於懸掛引用,這將會搞亂任何GC,而與實際實現無關。而這種懸而未決的引用可能會導致Java中的內存泄漏,儘管這些通常會在實踐中涉及一些hashmap。 –