是否应该取消引用数组堆栈中的值?

时间:2013-12-18 20:36:58

标签: java arrays stack

假设我有一些使用数组存储值的堆栈实现。弹出时,可以简单地改变我的“指针”值所指的位置,还是应该将当前数组位置设置为null?

public T pop() {
    size--;
    return stack[size];
}

对战

public T pop() {
    size--;
    T result = stack[size];
    stack[size] = null;
    return result;
}

2 个答案:

答案 0 :(得分:5)

如果未设置为null,则堆栈仍将保留对先前堆栈中对象的引用。它可能导致内存泄漏,因为只要有东西持有对象的引用,垃圾收集器就不会释放内存。

因此,请将stack[size]设为null

答案 1 :(得分:0)

您可能应该将它们设置为null。垃圾收集基于引用计数,如果将它们保留在堆栈上,但是不可用(这是你建议不设置为null),GC不知道它们是从堆栈“弹出”的。

设置为null将允许GC执行其操作