如果我有一个链表结构,我按如下方式实现clear()方法:
public void clear() {
firstNode = null;
size = 0;
}
它仍然可以正确收集垃圾,还是我想遍历每个节点,将nextNode设置为null?
没有一个节点可以直接从链表之外引用,所以在我的类之外不会有任何引用它们的情况,但是我不确定Java是否会正确地垃圾收集剩余的链接节点
答案 0 :(得分:11)
这应该没问题 - Java处理循环引用等没有问题。
答案 1 :(得分:2)
由于列表中没有节点具有外部引用。将firstNode
设置为null
会使所有节点都符合GC
的条件,因为无法通过外部参考访问任何节点。
答案 2 :(得分:1)
为了您的信息,Sun的LinkedList实现解析列表的所有元素并将它们设置为null