日期:2009-07-28  浏览次数:20545 次

这篇文章接着上一次的来,继续讨论无用资源回收的其它一些话题。

l         WeakReference(弱引用)

我们平常用的都是对象的强引用,如果有强引用存在,GC是不会回收对象的。我们能不能同时保持对对象的引用,而又可以让GC需要的时候回收这个对象呢?.NET中提供了WeakReference来实现。弱引用使用起来很简单,看下面的代码:

代码1

Object obj = new Object();

WeakReference wref = new WeakReference( obj );

obj = null;

第一行代码新建了一个新的对象,这里叫它对象A,obj是对对象A的强引用。接着第二行代码新建了一个弱引用对象,参数就是对象A的强引用,第三行代码释放掉对对象A的强引用。这时如果GC进行回收,对象A就会被回收。

怎样在取得对象A的强引用呢?很简单,请看代码2:

代码2

Object obj2 = wref.Target;

if( o