import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;
public class WeakReferenceExample {
public static void main(String[] args) {
// 创建一个包含弱引用的对象列表
List<WeakReference<MyObject>> weakReferences = new ArrayList<>();
// 创建一个 MyObject 实例并用弱引用来引用它
MyObject obj = new MyObject("Weakly referenced object");
WeakReference<MyObject> weakRef = new WeakReference<>(obj);
weakReferences.add(weakRef);
// 释放强引用
obj = null;
// 强制进行垃圾回收(注意:这不保证立即回收)
System.gc();
// 检查弱引用是否已经被清除
for (WeakReference<MyObject> ref : weakReferences) {
if (ref.get() == null) {
System.out.println("Weak reference has been cleared by GC.");
} else {
System.out.println("Weak reference is still active.");
}
}
}
}
class MyObject {
private String name;
public MyObject(String name) {
this.name = name;
}
@Override
protected void finalize() throws Throwable {
System.out.println("MyObject is being garbage collected.");
super.finalize();
}
}
WeakReference
是 Java 中的一种引用类型,它不会阻止对象被垃圾回收。当 JVM 进行垃圾回收时,如果发现某个对象只存在弱引用,则会回收该对象。new WeakReference<>(obj)
创建一个弱引用,指向 MyObject
实例。obj
设置为 null
,使得该对象只有弱引用指向它。System.gc()
建议 JVM 进行垃圾回收(但不保证立即执行)。ref.get()
检查弱引用是否已经被清除。如果返回 null
,表示对象已被垃圾回收。这段代码展示了如何使用弱引用来管理对象的生命周期,并观察其在垃圾回收过程中的行为。
上一篇:java的for循环
下一篇:java urldecoder
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站