WeakReference 类

表示弱引用,即在引用对象的同时仍然允许对该对象进行垃圾回收。

**命名空间:**System
**程序集:**mscorlib(在 mscorlib.dll 中)

语法

声明
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Class WeakReference
    Implements ISerializable
用法
Dim instance As WeakReference
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public class WeakReference : ISerializable
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public ref class WeakReference : ISerializable
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public class WeakReference implements ISerializable
SerializableAttribute 
ComVisibleAttribute(true) 
public class WeakReference implements ISerializable

备注

公共语言运行库的垃圾回收机制回收内存中不可访问的对象。如果对某个对象的所有直接和间接引用都变为无效(例如,通过将这些引用设置为 空引用(在 Visual Basic 中为 Nothing)),则该对象不可访问。对可访问对象的引用称为强引用。

弱引用也引用可访问对象(称为引用的目标)。用户通过将 Target 属性的值赋给变量来创建对目标的强引用。但是,如果没有对目标的强引用,目标将符合垃圾回收的条件,即使仍然存在对该对象的弱引用。

在对象变为符合垃圾回收条件时的时间和它被回收的时间之间可能有一个延迟。如果用户试图在目标已被回收后检索目标,将只能检索到空引用。如果目标尚未被回收,则可检索到有效引用。

如果存在对象的 Finalize 方法,则垃圾回收会在得到进行调用的指示时调用该方法(即执行终止)。终止完成后,如果用户试图通过当前 WeakReference 对象的 IsAliveTarget 属性访问该对象,则会引发 InvalidOperationException 异常。

术语

知道一些用于描述对象和垃圾回收的术语很有用。可访问并且可使用的对象称为活对象。不可用且符合垃圾回收的条件的对象称为死对象。如果获取了一个对死对象的强引用,则该对象又成为活对象,该对象称为复活对象。

WeakReference 对象可指定在终止之后是否保持对其目标的引用(也即弱引用是否应跟踪目标的复活)。不跟踪复活的弱引用称为“短弱引用”,跟踪复活的弱引用称为“长弱引用”。

性能注意事项

WeakReference 类经常在 WeakReference 对象的缓存维护对应用程序使用的一组对象的引用的代码示例中被引用。例如,如果对象由于超出范围而失效,垃圾回收机制仍然可以收回已分配的内存。

此示例用于演示一种巧妙的内存管理方案,但它具有误导性,因为不能将 WeakReference 类视为内存管理问题的自动解决方案。仍然必须为应用程序建立关于要保留和移除缓存中的哪些项的规则,即缓存策略。

.NET Framework 安全性

继承层次结构

System.Object
  System.WeakReference

线程安全

此类型的任何公共静态(Visual Basic 中的 Shared)成员都是线程安全的,但不保证所有实例成员都是线程安全的。

平台

Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

.NET Compact Framework

受以下版本支持:2.0、1.0

请参见

参考

WeakReference 成员
System 命名空间
GC 类