JAVA WeakReference-GC

People p1 = new People();//强引用,在程序代码中普遍存在,只要引用还在,GC永远不会回收掉被引用的对象

People p = null;
SoftReference<People> sa = new SoftReference<People>(p);
p = sa.get();//软引用,在系统即将发生内存溢出前,gc可能会向操作系统申请更多内存,
//而不是直接回收它,当实在没辙了才回收它,像cache系统,最适合用Soft reference


WeakReference<People> a = new WeakReference<People>(p);
WeakHashMap<String, Object> whm = new WeakHashMap<String, Object>();
whm.put("p1", p1);
//WeakHashMap,它的使用和普通的HashMap完全一样,不同点在于,WeakHashMap的key被实现为一种WeakReference(注意,是key而不是value)
//,当key对象被回收后,WeakHashMap会自动将对应的entry移除。更精确的说,对于一个给定的键,其映射的存在并不阻止垃圾回收器对该键的回收。
p = a.get();//一旦gc发现对象是weak reference可达就会把它放到ReferenceQueue中,然后等下次gc时回收它

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值