📅  最后修改于: 2023-12-03 15:16:02.958000             🧑  作者: Mango
Java.util.WeakHashMap
是 Java 中的一种 Map
实现,具有类似于 HashMap
的功能,但可以自动删除不再被引用的键。
它通过使用弱引用来实现这一点,因此如果没有外部引用指向它,就可以回收对象。这种特殊的行为使 WeakHashMap
成为一种非常有用的工具,特别是在需要缓存对象和避免内存泄漏的情况下。
下面的示例演示了如何使用 WeakHashMap
:
import java.util.WeakHashMap;
public class Main {
public static void main(String[] args) {
WeakHashMap<String, String> weakHashMap = new WeakHashMap<>();
String key1 = "key1";
String value1 = "value1";
weakHashMap.put(key1, value1);
String key2 = "key2";
String value2 = "value2";
weakHashMap.put(key2, value2);
// 删除 key1 的引用
key1 = null;
// 强制垃圾回收,如果 key1 不再被引用,那么 key1 和 value1 会被从 WeakHashMap 中删除
System.gc();
System.out.println(weakHashMap); // {key2=value2}
}
}
在此示例中,我们创建了一个 WeakHashMap
并将两个键值对放入其中。然后,我们删除了第一个键的引用,并强制进行垃圾回收。在回收之后,只有第二个键值对保留在 WeakHashMap
中,因为第一个键值对不再有引用。
Java.util.WeakHashMap
是一种非常有用的 Map
实现,可以自动删除不再被引用的键。它可以用于缓存对象和避免内存泄漏。但是需要注意,在使用 WeakHashMap
时,需要避免创建过多的对象,否则可能会导致性能问题。