WeakHashMap与HashMap用法差不多,只是HashMap的key保留了对实际对象的强引用,只要该HashMap的对象不被销毁,该HashMap的所有key所引用的对象就不会被垃圾会收掉,HashMap也不会删掉这些key对应的key-value值;WeakHashMap保留对实际对象的弱引用,功能相反
写个测试代码,你自己分析下
- import java.util.WeakHashMap;
- /**
- * 测试WeakHashMap的原理
- * @author Administrator
- *
- */
- public class WeakHashMapTest {
- public static void main(String[] args) {
-
- WeakHashMap<String,String> whm = new WeakHashMap<String,String>();
- //3个key都是匿名字符串对象
- whm.put(new String("梨子"), new String("1箱"));
- whm.put(new String("苹果"), new String("2箱"));
- whm.put(new String("橘子"), new String("3箱"));
- //该key是一个系统缓存的字符串对象
- whm.put("香蕉", new String("4箱"));
- //输出key对象,会输出4个-----{橘子=3箱, 苹果=2箱, 香蕉=4箱, 梨子=1箱}
- System.out.println(whm);
- //垃圾回收
- System.gc();
- //运行处于挂起终止状态的所有对象的终止方法
- System.runFinalization();
- //输出key对象,会输出1个-----{香蕉=4箱}
- System.out.println(whm);
- }
复制代码 |