弱引用与弱委托

一、弱引用:

  我们设计全局缓存时,使用静态或全局字段来引用某个对象,做到一次创建多次使用。比如:

但这样存在弊端:

  • DataCache没频繁使用时,浪费内存空间。
  • 由于GC只能回收不可达对象,所以没有办法回收这些资源。

WeakReference出场:即在引用对象的同时仍然允许对该对象进行垃圾回收。

所以我们可以这样设计缓存:

二、弱委托

弱委托解决当委托对象的生命周期足够的长时,导致委托内部持有的强对象不能回收,

比如:

输出结果为:abc abc
为了解决当垃圾回收进行时,委托的对象任然存在,就用到了WeakReference

输出结果当然只有一个def了。

CLR var C#中的弱委托:



 

posted @ 2011-12-20 15:46  kntao  阅读(332)  评论(0编辑  收藏  举报