双目标内存泄漏?

时间:2014-02-07 17:46:46

标签: c# java android memory-leaks

这是c#程序的设置:

内部主要课程:ObjA MyObjA = new ObjA();

内部ObjA:ObjB MyObjB = new ObjB();

所以main引用了ObjA,而ObjA引用了ObjB。

现在让我们说在主类中,我设置MyObjA = null;垃圾收集器是否会出现并销毁ObjA?或者它会保存它,因为它引用了ObjB(尚未销毁)?

在后一种情况下,您可以看到这将是一次巨大的内存泄漏。但是作为旁注,如果前一种情况属实,那么在ObjB被销毁之前,GC需要通过1次还是2次?

另外,有人可以告诉我Android Java会发生什么吗?这些是我与atm合作的两种语言。

1 个答案:

答案 0 :(得分:1)

MyObjA和MyObjB都将被销毁,因为它们无法从任何GC根源(诸如静态变量,堆栈变量或者像这样的递归指向的东西)中找不到。

我不确定你的意思是两次传球。 Java垃圾收集器的细节有点复杂,但如果对象无法访问,则应在单个GC循环中清除它们。