Java:weakhashmap如何确定密钥是否“过时”?

时间:2012-05-22 00:47:03

标签: java weakhashmap

它是如何知道这个钥匙已经老了并准备把它丢掉了?为什么字符串文字?

例如,

  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'键就会消失?

1 个答案:

答案 0 :(得分:5)

WeakHashMap没有做出这样的决定;相反,普通的Java垃圾收集过程会删除未引用的密钥。一旦触发Java垃圾收集,p密钥就会消失。

WeakHashMap做的是它使用弱引用来引用键,因此垃圾收集器知道不将WeakHashMap对映射键的引用计为“保持”内存中的关键对象。 / p>