Поделиться через


Метод 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
[out] Массив 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.

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