weakrefrence

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)来管理缓存。当强引用回收时,弱引用可以随时被回收!


 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值