2013-12-16 144 views
0

在Java中有2個對象AB; A創建B關於垃圾收集的Java拼圖

現在我們通過A = null或其他方式使A垃圾收集。這裏的挑戰是B應該被垃圾收集。

我們只有2個對象,另一個創建其他對象。新創建的對象不應該在垃圾收集前一個對象時收集垃圾。只是想知道在Java中可能嗎?讓我知道更多的信息。

謝謝!

+0

我認爲,當它超出範圍B會獲得收集不再使用/。 – Floris

+0

如果你不想'B'被垃圾收集,你需要保留它的參考。 – eatSleepCode

回答

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 
}