這裏是爲C#程序的設置:雙物體內存泄漏?
內部主要類:ObjA MyObjA = new ObjA();
內ObjA:ObjB MyObjB = new ObjB();
所以主要有ObjA參考,並ObjA有ObjB參考。
現在,讓我們來說,在主類中,我設置了MyObjA = null;
垃圾回收器是否會出現並摧毀ObjA?或者它會保存它,因爲它引用了ObjB(它還沒有被銷燬)?
你可以看到在後一種情況下這將是一個巨大的內存泄漏。但是作爲一個方面說明,如果前一種情況屬實,那麼在ObjB被銷燬之前是否需要1次或2次GC通過?
另外,有人可以告訴我在Android Java中會發生什麼嗎?這是我與atm合作的兩種語言。
你不能設置'ObjA = null'。您只能將指向ObjA的指針設置爲null,而不是:'MyObjA = null'。 –
Android和/或Java甚至沒有循環引用的問題,因爲垃圾收集不是基於簡單的引用計數(例如,計算有多少對象有一個引用給我,一旦計數爲0的空閒內存)就像它是(是?)在[ObjectiveC]中(http://pivotallabs.com/why-not-to-use-arc/)。 – zapl
@KeithPayne thanx,是一個打字錯誤/ mentalo,我編輯它,我的意思 – DrZ214