Метод ICorProfilerInfo2::GetGenerationBoundsICorProfilerInfo2::GetGenerationBounds Method

Получает области памяти, которые являются сегментами кучи, составляющими разные поколения сборки мусора.Gets the memory regions, which are segments of the heap, that make up the various garbage collection generations.

СинтаксисSyntax

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

ПараметрыParameters

cObjectRanges
[in] Количество элементов, выделенных вызывающим объектом для массива ranges.[in] The number of elements allocated by the caller for the ranges array.

pcObjectRanges
[out] Указатель на целое число, задающее общее число диапазонов, некоторые или все из которых будут возвращены в массиве ranges.[out] A pointer to an integer that specifies the total number of ranges, some or all of which will be returned in the ranges array.

ranges
заполняет Массив структур COR_PRF_GC_GENERATION_RANGE , каждый из которых описывает диапазон (т. е. блок) памяти в поколении, который является сборкой мусора.[out] An array of COR_PRF_GC_GENERATION_RANGE structures, each of which describes a range (that is, block) of memory within the generation that is undergoing garbage collection.

RemarksRemarks

Метод GetGenerationBounds может быть вызван из любого обратного вызова профилировщика при условии, что в этот момент не выполняется сборка мусора.The GetGenerationBounds method can be called from any profiler callback, provided that garbage collection is not in progress.

Большинство смещений поколений происходит во время сборки мусора.Most shifting of generations takes place during garbage collections. Поколения могут увеличиваться между сборками мусора, но обычно не перемещаются.Generations might grow between collections but generally do not move around. Таким образом, наиболее интересные места вызова метода GetGenerationBoundsICorProfilerCallback2::GarbageCollectionStarted и ICorProfilerCallback2::GarbageCollectionFinished.Therefore, the most interesting places to call GetGenerationBounds are in ICorProfilerCallback2::GarbageCollectionStarted and ICorProfilerCallback2::GarbageCollectionFinished.

При запуске программы некоторые объекты выделяются самой средой (CLR), обычно в поколениях 3 и 0.During program startup, some objects are allocated by the common language runtime (CLR) itself, generally in generations 3 and 0. Таким образом, к моменту начала выполнения управляемого кода эти поколения уже будут содержать объекты.Thus, by the time managed code starts executing, these generations will already contain objects. Поколения 1 и 2 обычно оказываются пустыми, разве что кроме фиктивных объектов, созданных сборщиком мусора.Generations 1 and 2 will normally be empty, except for dummy objects that are generated by the garbage collector. (Размер фиктивных объектов составляет 12 байт в 32-разрядных реализациях CLR; размер больше в 64-разрядных реализациях.) Вы также можете увидеть диапазоны поколения 2, которые находятся внутри модулей, созданных генератором образов в машинном кодах (NGen.exe).(The size of dummy objects is 12 bytes in 32-bit implementations of the CLR; the size is larger in 64-bit implementations.) You might also see generation 2 ranges that are inside modules produced by the Native Image Generator (NGen.exe). В этом случае объекты в поколении 2 являются замороженными объектами, которые выделяются при NGen.exe выполнения, а не сборщиком мусора.In this case, the objects in generation 2 are frozen objects, which are allocated when NGen.exe runs rather than by the garbage collector.

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

ТребованияRequirements

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

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

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

Платформа .NET Framework версии:Доступно с версии 2.0Available since 2.0.NET Framework Versions: Доступно с версии 2.0Available since 2.0

См. такжеSee also