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

标签 java android weak-references

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

You have to explicitly set that strong reference to null after use:

This one isn't so obvious: you might think that a strong reference ceases to exist once it goes out of scope. However, the JVM isn't required to do so, and for efficiency's sake, won't. The strong reference remains in the stack frame, and can get in the way of garbage collection.

这还是真的吗?如果我做类似的事情:

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

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

最佳答案

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

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

(好吧,有些人给 JVM 巨大的内存,并完全关闭 GC;他们只是每隔 N 天重新启动应用程序。)

关于java - 在Java中使用WeakReference时必须在使用后设置对null的强引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7341878/

相关文章:

java - 使用 JSON 的登录表单

Android:微调器在数据集更改后不更新

swift - 弱或无主或无

java - 在 Java 对象被垃圾收集之前对其进行回调

ios - UIView拥有很强的引用性

Java 类路径问题

java - PrintWriter 处理多个 If else 语句

java - Android - 获取 Facebook 集成的哈希键

java - 确定矩形的哪一侧被击中

java - 无法访问Java中字段的注释