3

如果我有一个链表结构,我实现了clear()方法如下:链表实现在Java和垃圾收集

public void clear() { 
    firstNode = null; 
    size = 0; 
} 

将它仍然得到正确地收集垃圾,不然我会想遍历每个节点,将nextNode设置为null?

没有一个节点可以从链表外部直接引用,所以没有任何情况会在我的类之外引用它们中的任何一个,但我不确定Java是否会正确地垃圾收集剩余的链接节点。

+1

准确地说,引用计数问题[C++自动/智能指针等],而不是GC。 – Fakrudeen 2010-03-02 11:31:52

回答

11

这应该没问题 - Java处理循环引用等没有问题。

1

为您的信息,由Sun LinkedList的执行解析列表中的所有元素,并将它们设置为null

+1

是的,但这只是必要的,因为Java的LinkedList是双重链接 – 2010-09-15 15:56:22

2

由于没有列表的节点有外部的参考。将firstNode设置为null将使所有节点符合GC的条件,因为无法从外部引用到达任何节点。

+0

+1,用于阐明GC不计算引用,它确定可访问性。 – 2010-09-15 15:56:23