0

它怎么知道这把钥匙是旧的并准备扔掉?为什么是字符串文字?

例如,

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

4

1 回答 1

5

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

它的作用是WeakHashMap使用弱引用来引用键,因此垃圾收集器知道不WeakHashMap将对映射键的引用算作“持有”内存中的键对象。

于 2012-05-22T00:49:23.027 回答