垃圾收集的Java拼图

时间:2013-12-16 05:37:34

标签: java garbage-collection

我们在Java中有2个对象AB; A创建B

现在我们通过A或其他方式让A = null收集垃圾。这里的挑战是B应该收集垃圾。

我们只有2个对象,其中一个创建其他对象。当先前的对象被垃圾收集时,新创建的对象不应该被垃圾收集。只是想知道Java可能吗?让我知道更多信息。

谢谢!

1 个答案:

答案 0 :(得分:1)

谁创建了B并不重要。只要B被引用到某个地方就不会被垃圾收集。

所以,让我们说,

private static B getB(){
   A a = new A();
   B b = a.getB();
   a = null; // not really required it will be gone as soon as I get out of this method.
   return b;
}


public void addToALookupMap(){
    B b = getB();
    aStaticFinalLookupMap.put(b.getId(), b); //b is not garbage collected until the map get, at least
}