我们在Java中有2个对象A
和B
; A
创建B
。
现在我们通过A
或其他方式让A = null
收集垃圾。这里的挑战是B
应该收集垃圾。
我们只有2个对象,其中一个创建其他对象。当先前的对象被垃圾收集时,新创建的对象不应该被垃圾收集。只是想知道Java可能吗?让我知道更多信息。
谢谢!
答案 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
}