COR_GC_REFERENCE 结构

包含有关要进行垃圾回收的对象的信息。

语法

typedef struct _COR_GC_REFERENCE {  
    ICorDebugAppDomain *domain;
    ICorDebugValue *location;  
    CorGCReferenceType type;  
    UINT64 extraData;  
} COR_GC_REFERENCE;  

成员

成员 说明
domain 指向句柄或对象所属的应用程序域的指针。 其值可以是 null
location 与要被垃圾回收的对象相对应的 ICorDebugValue 或 ICorDebugReferenceValue 接口。
type 一个 CorGCReferenceType 枚举值,该值指示根的来源。 有关详细信息,请参阅“备注”部分。
extraData 要被垃圾回收的对象的其他相关数据。 这些信息取决于对象的源,如字段 type 所示。 有关详细信息,请参阅“备注”部分。

备注

type 字段是一个 CorGCReferenceType 枚举值,指示引用的来源。 特定的 COR_GC_REFERENCE 值可以反映以下任何一种托管对象:

  • 来自所有托管堆栈 (CorGCReferenceType.CorReferenceStack) 的对象。 这包括托管代码中的实时引用以及公共语言运行时创建的对象。

  • 句柄表 (CorGCReferenceType.CorHandle*) 中的对象。 这包括模块中的强引用(HNDTYPE_STRONGHNDTYPE_REFCOUNT)和静态变量。

  • 终结器队列 (CorGCReferenceType.CorReferenceFinalizer) 中的对象。 终结器队列对对象进行 root 操作,直到终结器运行。

extraData 字段包含其他数据,具体取决于引用的源(或类型)。 可能的值为:

  • DependentSource. 如果 typeCorGCReferenceType.CorHandleStrongDependent,则该字段将是一个对象,它在活动状态时,会对将在 COR_GC_REFERENCE.Location 处进行垃圾回收的对象执行 root 操作。

  • RefCount. 如果 typeCorGCReferenceType.CorHandleStrongRefCount,则该字段是句柄的引用计数。

  • Size. 如果 typeCorGCReferenceType.CorHandleStrongSizedByref,则该字段是垃圾回收器为其计算对象根的对象树的最后大小。 注意,此计算不一定是最新的。

要求

平台:请参阅系统要求

标头:CorDebug.idl、CorDebug.h

库:CorGuids.lib

.NET Framework 版本:自 4.5 起可用

请参阅