weakrefrence

来源:互联网 发布:人人商城 源码 编辑:程序博客网 时间:2024/05/20 21:48

1、java -version:

java 1.6

2、example: 如下面代码

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);            System.gc();        }    }

其中1会回收,2由于String的特殊性不会回收,3因为有强引用存在所以也不会回收。


对weakrefrence的作用理解是:对象不能存在强引用,否gc会把对象当成强引用处理。

对weakhashmap的理解是:大神说可以用来消除过期对象的,肯定是有道理的,只是个人还没理解透彻用在何种场合。如果对象在刚放进weakhashmapde的时候就发生了GC岂不是,这个值就丢了?如果单从上面的例子来看确实是这样的,那岂不是写出的程序很不稳定,其实用weakhashmap的时候是作为强引用hashmap的补充,当强引用范围外,还是想用该对象但是又不想干扰强引用对象的生命周期,就可以用弱引用(weakhashmap)来管理缓存。当强引用回收时,弱引用可以随时被回收!


 




0 0
原创粉丝点击