2012-02-25 101 views
0

这是一个来自我的LinkedList类中的删除函数的示例代码,它从中间删除了一个节点。关于从LinkedList中删除节点时的垃圾回收器

 temp.getPrev().setNext(temp.getNext()); 
     temp.getNext().setPrev(temp.getPrev()); 
     temp.setNext(null); 
     temp.setPrev(null); 

我的问题是我必须设置下一个temps和prev引用null或垃圾收集器句柄与此自动_ ?.如果你能帮助我,我将非常感激。并且无论如何感谢。

回答

2

垃圾收集器分析是否有任何参考的一个对象。由于在完成方法后没有提及temp,GC应删除此对象。

1

垃圾收集器会看到什么时候没有引用剩余temp。因此,您不必关心将输出参考归零 - 如果您无法再达到临时参数,它将被垃圾收集(最终)。

+0

因此垃圾收集器会在temp.getNext()。setPrev(temp.getPrev());第二行之后立即收集temp。 – quartaela 2012-02-25 22:08:27

+0

不,你需要设置'temp = null'(否则你有一个temp - temp本身的引用!)。此外,垃圾收集不是以确定性的方式完成的。你根本无法确切知道它何时会运行,只是在运行时会删除所有不可访问的对象。 – 2012-02-25 22:09:45

+1

你是什么意思,温度有一个参考本身?你能解释一下吗? – quartaela 2012-02-25 22:13:37

1

我不认为你应该。该节点不再被引用,因此即使它引用了有效的对象,它也会被垃圾收集。

1

您必须确保没有对temp的实时引用。你不需要做任何额外的事情。

1

GC只考虑对象的引用。如果对象具有对其他对象的引用,则无关紧要。