java中的对象游离

来源:互联网 发布:外汇数据下载 编辑:程序博客网 时间:2024/04/29 21:19

  在学习《算法》中遇到了这个,在实现栈的时候,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;}
原创粉丝点击