/* WeakHashMap */ public static void weakHashMap(){ String a = new String("A_KEY"); String b = new String("B_KEY"); Map<String, String> weakHashMap = new WeakHashMap<String, String>(); weakHashMap.put(a, "A_VALUE"); weakHashMap.put(b, "B_VALUE"); weakHashMap.put(null, "NULL_VALUE"); System.out.println("get 1:"+weakHashMap.get(a)); //将a指向null,这样除了weakHasMap对 new String("A_KEY")有引用外,在没有变量引用 a=null; //调用get()方法能获取到value值,说明A_KEY还没有从集合中删除 System.out.println("get 2:"+weakHashMap.get(new String("A_KEY"))); //启动垃圾回收器 System.gc(); System.out.println("System.gc()"); System.out.println("get 3:"+weakHashMap.get(new String("A_KEY"))); System.out.println("打印weakHasMap中的元素......"); for(Iterator<Entry<String, String>> it = weakHashMap.entrySet().iterator();it.hasNext();){ Entry<String, String> entry = it.next(); System.out.println("key:"+entry.getKey()+" value:"+entry.getValue()); } }
public static void main(String args[]){ WeakHashMap<String, String> map = new WeakHashMap<String, String>(); map.put(new String("1"), "1"); map.put("2", "2"); String s = new String("3"); map.put(s, "3"); while (map.size() > 0) { try { Thread.sleep(500); } catch (InterruptedException ignored) { } System.out.println("Map Size:"+map.size()); System.out.println(map.get("1")); System.out.println(map.get("2")); System.out.println(map.get("3")); System.gc(); } }