0
在Java中有2個對象A
和B
; A
創建B
。關於垃圾收集的Java拼圖
現在我們通過A = null
或其他方式使A
垃圾收集。這裏的挑戰是B
應該被垃圾收集。
我們只有2個對象,另一個創建其他對象。新創建的對象不應該在垃圾收集前一個對象時收集垃圾。只是想知道在Java中可能嗎?讓我知道更多的信息。
謝謝!
在Java中有2個對象A
和B
; A
創建B
。關於垃圾收集的Java拼圖
現在我們通過A = null
或其他方式使A
垃圾收集。這裏的挑戰是B
應該被垃圾收集。
我們只有2個對象,另一個創建其他對象。新創建的對象不應該在垃圾收集前一個對象時收集垃圾。只是想知道在Java中可能嗎?讓我知道更多的信息。
謝謝!
創建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
}
我認爲,當它超出範圍B會獲得收集不再使用/。 – Floris
如果你不想'B'被垃圾收集,你需要保留它的參考。 – eatSleepCode