Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
垃圾收集的Java难题_Java_Garbage Collection - Fatal编程技术网

垃圾收集的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; //

Java中有两个对象
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
被垃圾收集,你需要保留它的引用。