Метод ICorProfilerInfo2::GetGenerationBounds

Получает области памяти, которые являются сегментами кучи, составляющими разные поколения сборки мусора.

Синтаксис

HRESULT GetGenerationBounds(  
    [in]  ULONG cObjectRanges,  
    [out] ULONG *pcObjectRanges,  
    [out, size_is(cObjectRanges), length_is(*pcObjectRanges)] COR_PRF_GC_GENERATION_RANGE ranges[]);  

Параметры

cObjectRanges
[in] Количество элементов, выделенных вызывающим объектом для массива ranges.

pcObjectRanges
[out] Указатель на целое число, задающее общее число диапазонов, некоторые или все из которых будут возвращены в массиве ranges.

ranges
заполняет Массив структур COR_PRF_GC_GENERATION_RANGE , каждый из которых описывает диапазон (т. е. блок) памяти в поколении, который является сборкой мусора.

Комментарии

Метод GetGenerationBounds может быть вызван из любого обратного вызова профилировщика при условии, что в этот момент не выполняется сборка мусора.

Большинство смещений поколений происходит во время сборки мусора. Поколения могут увеличиваться между сборками мусора, но обычно не перемещаются. Таким образом, наиболее интересные места вызова метода GetGenerationBoundsICorProfilerCallback2::GarbageCollectionStarted и ICorProfilerCallback2::GarbageCollectionFinished.

При запуске программы некоторые объекты выделяются самой средой (CLR), обычно в поколениях 3 и 0. Таким образом, к моменту начала выполнения управляемого кода эти поколения уже будут содержать объекты. Поколения 1 и 2 обычно оказываются пустыми, разве что кроме фиктивных объектов, созданных сборщиком мусора. (Размер фиктивных объектов составляет 12 байт в 32-разрядных реализациях CLR; размер больше в 64-разрядных реализациях.) Вы также можете увидеть диапазоны поколения 2, которые находятся внутри модулей, созданных генератором образов в машинном кодах (NGen.exe). В этом случае объекты в поколении 2 являются замороженными объектами, которые выделяются при NGen.exe выполнения, а не сборщиком мусора.

Эта функция использует буферы, выделенные вызывающим объектом.

Требования

Платформы: см. раздел Требования к системе.

Заголовок: CorProf.idl, CorProf.h

Библиотека: CorGuids.lib

платформа .NET Framework версии: доступно с 2,0

См. также раздел