爲了記錄在案,我不一個 Java初學者,但 - 而 - 中間級的傢伙誰有點忘了介紹一下關於Java的基本面。爲什麼指定的對象有資格進行垃圾回收?
class C{ public static void main(String a[]){ C c1=new C(); C c2=m1(c1); //line 4 C c3=new C(); c2=c3; // line 6 anothermethod(); } static C m1(C ob1){ ob1 =new C(); // line 10 return ob1; } void anothermethod(){} }
從上面的代碼:
爲什麼是它管線6後,
C
型的2個對象是符合垃圾收集(GC)?爲什麼不是在第4行和第10行,一個拷貝的
c1
傳遞到m1()
方法。因此,最終在第6行中,將有1個對象(不是2個)將有資格獲得GC。畢竟,不是java傳遞值而不是傳遞引用?
你用漂亮的代碼混淆 – Roman 2010-02-19 16:13:29
這個代碼不應該編譯:'anothermethod'不是靜態的,而是被稱爲靜態上下文 – 2010-02-19 17:24:21