定义用于详细垃圾回收堆信息的传输缓冲区。
Note
此 API 最初旨在供运行时内部使用。 尽管现在支持第三方使用,但我们建议尽量使用 ICorDebug 和 ICorProfiler 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 起可用