小编zhu*_*uj9的帖子

当 Java 对象仍然与强引用和弱引用链接时,它会被 gc-ed

我这里有一个例子:

import java.lang.ref.WeakReference;

public class WeakRefTest {
    public static void main(String[] args) {
        Object obj = new Object();
        WeakReference<Object> weakRef = new WeakReference<Object>(obj);
        int i = 0;
        while (true) {
            if (weakRef.get() != null) {
                i++;
                System.out.println("The object is alive for " + i + " loops - " + weakRef);
            } else {
                System.out.println("The object has been collected.");
                break;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

运行这个程序时,我们会"The object has been collected."在一段时间后得到输出,这意味着对象将被 gc-ed。

但是,仍然存在一个名为"obj"链接到对象的强引用,如何回收?因为后来JVM发现没有强引用使用,所以不是强可达?

java reference

5
推荐指数
1
解决办法
110
查看次数

标签 统计

java ×1

reference ×1