有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

当Java对象仍然与强引用和弱引用链接时,它被gced

我举个例子:

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;
            }
        }
    }
}

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

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


共 (0) 个答案