[英]double object memory leak?
這是C#程序的設置:
內部主類: ObjA MyObjA = new ObjA();
內部ObjA: ObjB MyObjB = new ObjB();
因此main引用了ObjA,而ObjA引用了ObjB。
現在,在主類中,我將MyObjA = null;
設置MyObjA = null;
垃圾收集器會出現並摧毀ObjA嗎? 還是由於引用了ObjB(尚未銷毀)而將其保存?
您可以看到在后一種情況下這將是一個巨大的內存泄漏。 但是作為一個旁注,如果前一種情況是正確的,那么在銷毀ObjB之前需要花1遍還是2遍GC?
另外,有人可以告訴我Android Java中會發生什么嗎? 這些是我正在使用atm的兩種語言。
MyObjA和MyObjB都將被銷毀,因為它們無法從任何GC根目錄訪問(靜態變量,堆棧變量之類的東西,或諸如此類的東西遞歸指向的東西)。
我不確定兩次通過的意思。 Java垃圾收集器的細節有些復雜,但是,如果對象不可訪問,則應在單個GC周期中清理它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.