DacpGcHeapDetails 结构

定义用于详细垃圾回收堆信息的传输缓冲区。

Note

此 API 最初旨在供运行时内部使用。 尽管现在支持第三方使用,但我们建议尽量使用 ICorDebugICorProfiler API。

Syntax

#define DAC_NUMBERGENERATIONS 4

struct DacpGcHeapDetails : ZeroInit<DacpGcHeapDetails>
{
    CLRDATA_ADDRESS heapAddr; // Only filled in in server mode, otherwise NULL
    CLRDATA_ADDRESS alloc_allocated;

    CLRDATA_ADDRESS mark_array;
    CLRDATA_ADDRESS current_c_gc_state;
    CLRDATA_ADDRESS next_sweep_obj;
    CLRDATA_ADDRESS saved_sweep_ephemeral_seg;
    CLRDATA_ADDRESS saved_sweep_ephemeral_start;
    CLRDATA_ADDRESS background_saved_lowest_address;
    CLRDATA_ADDRESS background_saved_highest_address;

    DacpGenerationData generation_table [DAC_NUMBERGENERATIONS]; 
    CLRDATA_ADDRESS ephemeral_heap_segment;        
    CLRDATA_ADDRESS finalization_fill_pointers [DAC_NUMBERGENERATIONS + 3];
    CLRDATA_ADDRESS lowest_address;
    CLRDATA_ADDRESS highest_address;
    CLRDATA_ADDRESS card_table;

    // Use this for workstation mode (DacpGcHeapData.bServerMode==FALSE).
    HRESULT Request(ISOSDacInterface *sos)
    {
        return sos->GetGCHeapStaticData(this);
    }

    // Use this for Server mode, as there are multiple heaps,
    // and you need to pass a heap address in addr.
    HRESULT Request(ISOSDacInterface *sos, CLRDATA_ADDRESS addr)
    {
        return sos->GetGCHeapDetails(addr, this);
    }
};

Members

成员 说明
heapAddr GC 堆的地址。 此成员仅在服务器模式下填充;否则,为 NULL.
alloc_allocated 堆的当前分配指针。
mark_array 标记数组的地址。
current_c_gc_state 当前压缩 GC 状态的地址。
next_sweep_obj 要扫描的下一个对象的地址。
saved_sweep_ephemeral_seg 保存的临时段的地址进行扫描。
saved_sweep_ephemeral_start 保存的临时扫描开始的地址。
background_saved_lowest_address 为后台 GC 状态保存的最低地址。
background_saved_highest_address 为后台 GC 状态保存的最高地址。
generation_table DacpGenerationData 结构的数组,其中包含每个 GC 生成的数据。
ephemeral_heap_segment 临时堆段的地址。
finalization_fill_pointers 最终化填充指针的数组。
lowest_address 堆中的最低地址。
highest_address 堆中的最高地址。
card_table GC 卡表的地址。
Request 通过调用 ISOSDacInterface::GetGCHeapStaticData 工作站 GC 或 ISOSDacInterface::GetGCHeapDetails 服务器 GC 来填充结构。

Remarks

此结构位于运行时内,不会通过任何标头或库文件公开。 若要使用它,请定义上面指定的结构。

要求

平台:请参阅系统要求
页眉: 没有
图书馆: 没有
.NET Framework 版本:自 4.7 起可用

另见