[英]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.