它是如何知道这个钥匙已经老了并准备把它丢掉了?为什么字符串文字?
例如,
private static WeakHashMap<<? extends Object>, String> m =
new WeakHashMap<<? extends Object>, String>();
public static void A(){
Point p = new Point();
m.put(p, "a");
}
这是否意味着一旦A()返回,'p'键就会消失?
答案 0 :(得分:5)
WeakHashMap
没有做出这样的决定;相反,普通的Java垃圾收集过程会删除未引用的密钥。一旦触发Java垃圾收集,p
密钥就会消失。
WeakHashMap
做的是它使用弱引用来引用键,因此垃圾收集器知道不将WeakHashMap
对映射键的引用计为“保持”内存中的关键对象。 / p>