假设我有一些使用数组存储值的堆栈实现。弹出时,可以简单地改变我的“指针”值所指的位置,还是应该将当前数组位置设置为null?
public T pop() {
size--;
return stack[size];
}
对战
public T pop() {
size--;
T result = stack[size];
stack[size] = null;
return result;
}
答案 0 :(得分:5)
如果未设置为null
,则堆栈仍将保留对先前堆栈中对象的引用。它可能导致内存泄漏,因为只要有东西持有对象的引用,垃圾收集器就不会释放内存。
因此,请将stack[size]
设为null
。
答案 1 :(得分:0)
您可能应该将它们设置为null。垃圾收集基于引用计数,如果将它们保留在堆栈上,但是不可用(这是你建议不设置为null),GC不知道它们是从堆栈“弹出”的。
设置为null将允许GC执行其操作