弱引用与弱委托
一、弱引用:
我们设计全局缓存时,使用静态或全局字段来引用某个对象,做到一次创建多次使用。比如:
但这样存在弊端:
- DataCache没频繁使用时,浪费内存空间。
- 由于GC只能回收不可达对象,所以没有办法回收这些资源。
WeakReference出场:即在引用对象的同时仍然允许对该对象进行垃圾回收。
所以我们可以这样设计缓存:
二、弱委托
弱委托解决当委托对象的生命周期足够的长时,导致委托内部持有的强对象不能回收,
比如:
输出结果为:abc abc
为了解决当垃圾回收进行时,委托的对象任然存在,就用到了WeakReference
输出结果当然只有一个def了。
CLR var C#中的弱委托: