垃圾收集的Java难题
Java中有两个对象垃圾收集的Java难题,java,garbage-collection,Java,Garbage Collection,Java中有两个对象A和BA创建B 现在我们制作A,通过制作A=null或其他方式来收集垃圾。这里的挑战是B应该被垃圾回收 我们只有两个对象,一个创建另一个。新创建的对象不应被垃圾收集,而先前的对象则被垃圾收集。我只是想知道这在Java中可能吗?让我知道更多信息 谢谢 谁创建了B并不重要。只要B被引用到某个地方,它就不会被垃圾收集 那么说, private static B getB(){ A a = new A(); B b = a.getB(); a = null; //
A
和B
<代码>A创建B
现在我们制作A
,通过制作A=null
或其他方式来收集垃圾。这里的挑战是B
应该被垃圾回收
我们只有两个对象,一个创建另一个。新创建的对象不应被垃圾收集,而先前的对象则被垃圾收集。我只是想知道这在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将在超出范围/不再使用时被收集。如果你不想
B
被垃圾收集,你需要保留它的引用。