自定义链接列表实现垃圾回收

时间:2017-06-07 18:48:51

标签: java memory-leaks

给出java中的自定义链表实现(来自Cracking The Coding Interview)

public class Node {
    public Node next = null;
    public int data;

    public Node(int d) {
        data = d;
    }

    protected void appendToTail(int d){
        Node end = new Node(d);
        Node n = this;
        while (n.next != null) {
            n = n.next;
        }
        n.next = end;
    }
}

如果我们要创建一个链接列表,然后在没有临时变量的情况下迭代它以指向原始头部,即

Node list = new Node(5);
list.appendToTail(2);
list.appendToTail(4);

给我们一个清单

5 -> 2 -> 4

如果我发出

会发生什么
list = list.next;

这会是C中的内存泄漏吗?或Java垃圾收集?

1 个答案:

答案 0 :(得分:1)

简短的回答:不,不会有内存泄漏。

如果您指示指针指向第二个节点,则表示对头部的引用丢失。这假设您没有其他对头部的引用。

如果没有任何引用指向它,该对象将被标记为垃圾收集。