关于从LinkedList中删除节点时的垃圾收集器



这是我的LinkedList类中删除函数的一个示例代码,该函数从中间删除一个节点。

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

我的问题是,我是否必须将temps next和prev引用设置为null,或者垃圾收集器是否自动处理这个?。如果你能帮助我,我将不胜感激。无论如何,谢谢你。

垃圾回收器分析是否存在对对象的任何引用。由于在方法完成后没有对temp的引用,GC应该删除此对象。

垃圾收集器将在temp没有引用时查看。因此,您不必关心取消传出引用——如果您不能再访问temp,它将被垃圾收集(最终)。

我认为你不应该这样做。节点不再在任何地方被引用,因此即使它引用了有效的对象,它也将被垃圾收集。

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

GC只考虑对对象的引用。对象是否具有对其他对象的引用并不重要。

我的问题是,我是否必须将temps next和prev引用设置为null,或者垃圾收集器是否自动处理这个?

在对象变得不可访问之前,您不必将对象字段中的引用设置为null。

垃圾收集器也不会为您将它们设置为null。

但是,从不可访问的对象引用对象并不能阻止垃圾收集。

因此,如果以后对下一个(或上一个)节点的唯一引用来自其他无法访问的节点,则可以收集该节点。

相关内容

  • 没有找到相关文章

最新更新