我有點困惑,找出有多少個對象資格GC時線18 PLZ解釋有多少個對象資格GC當行18 // TODO
class B{}
class A{
static B b1;
B b2;
}
public class Test {
public static void main(String[] args) {
B b1=new B();
B b2=new B();
A a1=new A();
A a2=new A();
a1.b1=b1;
a1.b2=b1;
a2.b2=b2;
a1=null;
b1=null;
b2=null;
// TODO Auto-generated method stub
}
}
有多少個對象資格用於GC當線19
取決於哪個行是行19的對象) – Mark
假設線19是最後的(main括號),因爲這是程序的結束,所有對象都有資格使用GC。有多少是我無法確切說出的,因爲我不確切知道JVM加載了哪些類。在'a1 = null;'之後,只有'a1'符合gc。在'b1 = null;'之後,'b1'獲得GC資格。在b2 = null;'之後''b2'不符合GC的條件,因爲它仍然可以通過'a2.b2'到達。 – Turing85
參考我以前的評論:請注意,當我運行「'a1'獲得符合GC的條件時」,我的意思是「該對象,在被設置爲null之前引用的a1'獲得了符合GC的條件」。很難談論這個問題,因爲只要它不被垃圾收集,它就存在和無名。我希望意圖清楚。 – Turing85