java - Java 的链表堆栈实现中的徘徊

标签 java memory linked-list stack

java的链表栈实现中是否存在徘徊的概念? 在从链表中删除节点之前,是否需要通过将节点的内容设置为 null 来释放内存?或者这样做是否同样好,因为无论如何都不会引用我的旧第一个节点?谢谢!

public Item pop() {
    if (isEmpty()) 
        throw new StackEmptyException("Stack Empty");
    Item item = first.item;
    first.item = null;
    first = first.next;
    return item;
}

最佳答案

它确实存在,但您不太可能需要担心它。

就您的情况而言,在 first = first.next 之后,Java GC 将识别出 first 指向的旧节点现在无法访问,因此可以被收集。

关于java - Java 的链表堆栈实现中的徘徊,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30319687/

相关文章:

C编程内存子分配器的循环列表

java - LinkedList : java. lang.OutOfMemoryError:Java堆空间

c - 函数作为变量使用,如何使用其内存地址知道实际调用了哪个函数

c++ - 添加一个元素到链表的末尾

java - 暴力匹配是否适用于 FREAK 描述符?

java - 分析 Mule ESB 应用程序

c++ - 一个类的数组成员的内存会被分配吗?

c - 释放 C 中分配的内存

java - 如何在android中存储帐户数组列表?

java - 将 List<Object[]> 转换为 HashMap<Integer,List<String>> 什么是最佳方法?