【问题标题】:Custom Linked List implementation garbage collection自定义链表实现垃圾回收
【发布时间】:2017-06-07 18:48:50
【问题描述】:

给定一个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 会进行垃圾收集?

【问题讨论】:

标签: java memory-leaks


【解决方案1】:

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

如果您将指针前进到指向第二个节点,这意味着对头的引用丢失了。这是假设您没有其他对头部的引用。

没有任何引用指向它,这个对象将被标记为垃圾回收。

【讨论】:

  • 知道这真是太棒了,让事情感觉更安全。谢谢!
猜你喜欢
  • 1970-01-01
  • 2011-01-22
  • 2023-03-26
  • 1970-01-01
  • 2016-12-27
  • 2014-07-21
  • 1970-01-01
  • 2012-10-31
相关资源
最近更新 更多