您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在Java中将对象分配为null是否会影响垃圾回收?

在Java中将对象分配为null是否会影响垃圾回收?

通常没有。

但是像所有事物一样:这取决于。如今,Java中的GC非常好,应在无法访问所有内容后不久对其进行清理。这只是在为局部变量保留方法之后,并且不再为字段引用类实例时。

如果你知道否则将保留引用,则只需要显式设置null。例如,保留的数组。你可能想在不再需要数组的各个元素时将它们为空。

例如,来自ArrayList的以下代码

public E remove(int index) {
    RangeCheck(index);

    modCount++;
    E oldValue = (E) elementData[index];

    int numMoved = size - index - 1;
    if (numMoved > 0)
         System.arraycopy(elementData, index+1, elementData, index,
             numMoved);
    elementData[--size] = null; // Let gc do its work

    return oldValue;
}

同样,只要没有引用保留,显式将对象清为空将不会导致它比自然超出范围自然早被收集。

都:

void foo() {
   Object o = new Object();
   /// do stuff with o
}

和:

void foo() {
   Object o = new Object();
   /// do stuff with o
   o = null;
}

功能上是等效的。

java 2022/1/1 18:24:03 有462人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶