当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) 个答案