使用WeakReference时,必须在Java中使用后设置对null的强引用?

时间:2011-09-08 00:18:15

标签: java android weak-references

我正在阅读this,因为我在我的代码中遇到了与弱引用相关的一些内存问题,当我看到这个小注释时:

  

使用后必须明确设置对null的强引用:

     

这一点并不那么明显:一旦超出范围,您可能会认为强大的参考不再存在。但是,JVM不需要这样做,并且为了效率,不会。强引用仍然存在于堆栈框架中,并且可能妨碍垃圾收集。

这仍然是真的吗?如果我这样做:

void foo(){
    Object obj = weakRef.get();
    doStuffWith(obj);
}

当我完成方法时,是否需要设置obj = null,否则我会泄漏obj?

1 个答案:

答案 0 :(得分:0)

JVM确实不需要这样做。事实上,JVM根本不需要做GC。

但是没有使本地引用无效的JVM与不执行GC的JVM一样不合理。

(好吧,有些人为JVM提供了巨大的内存,并完全关闭了GC;他们每隔N天就会重启一次。)