一、引言
WeakHashMap是Java集合框架中一个特殊的Map实现,它使用弱引用来保存键,这意味着当键对象不再被其他地方引用时,相应的键值对会被自动从Map中移除。这种特性使其特别适合实现缓存等场景。
二、弱引用基础
在Java中,弱引用是比软引用更弱的引用类型。当一个对象只有弱引用指向它时,在下一次垃圾回收时就会被回收。WeakHashMap正是利用这一特性来实现其独特的功能。
public class WeakReferenceDemo {
public static void main(String[] args) throws InterruptedException {
// 创建一个强引用对象
String strongRef = new String("Strong Reference");
// 创建一个弱引用
WeakReference<String> weakRef =
new WeakReference<>(new String("Weak Reference"));
System.out.println("初始状态:");
System.out.println("Strong Reference: " + strongRef);
System.out.println("Weak Reference: " + weakRef.get());
// 触发垃圾回收
System.gc();
Thread.sleep(100); // 等待GC完成
System.out.println("\n垃圾回收后:");
System.out.println("Strong Reference: " + strongRef);
System.out.println("Weak Reference: " + weakRef.get());
}
}