算法学习记录(1)
- 细节记录
在实现栈的时候,pop()时,被弹出的元素的引用实际上还存在在数组中,这个元素实际上已经是一个孤儿了,再也不会被访问了,但java的垃圾收集器没法知道这一点,除非该引用被覆盖,即使用例已经不再需要这个元素了,数组中的引用仍然可以让它继续存在,保存一个不需要的对象的引用称为游离。
将弹出的数组元素的值设为null即可,这将覆盖无用的引用并使系统可以在用例使用完被弹出的元素后回收他的内存.,让垃圾回收机制回收。
public Item pop(){
Item temp = a[--N];
a[N] = null;//防止对象游离
if (N > 0 && N == a.length/4)
resize(a.length/2);
return temp;
}
本代码片段来自算法 第四版 (136页)