Método ICorProfilerInfo2::GetGenerationBounds
Obtém as regiões de memória, que são segmentos da área dinâmica, que compõem as várias gerações de libertação de lixo.
Sintaxe
HRESULT GetGenerationBounds(
[in] ULONG cObjectRanges,
[out] ULONG *pcObjectRanges,
[out, size_is(cObjectRanges), length_is(*pcObjectRanges)] COR_PRF_GC_GENERATION_RANGE ranges[]);
Parâmetros
cObjectRanges
[in] O número de elementos alocados pelo autor da chamada para a ranges
matriz.
pcObjectRanges
[fora] Um ponteiro para um número inteiro que especifica o número total de intervalos, alguns ou todos os quais serão devolvidos na ranges
matriz.
ranges
[fora] Uma matriz de estruturas COR_PRF_GC_GENERATION_RANGE , cada uma das quais descreve um intervalo (ou seja, bloco) de memória dentro da geração que está a ser submetida à libertação da memória.
Observações
O GetGenerationBounds
método pode ser chamado a partir de qualquer chamada de retorno do profiler, desde que a libertação da memória não esteja em curso.
A maior parte das mudanças de gerações ocorre durante as coleções de lixo. As gerações podem crescer entre coleções, mas geralmente não se movem. Portanto, os locais mais interessantes para chamar GetGenerationBounds
são em ICorProfilerCallback2::GarbageCollectionStarted
e ICorProfilerCallback2::GarbageCollectionFinished
.
Durante o arranque do programa, alguns objetos são alocados pelo próprio runtime de linguagem comum (CLR), geralmente nas gerações 3 e 0. Assim, quando o código gerido começar a ser executado, estas gerações já irão conter objetos. As gerações 1 e 2 estarão normalmente vazias, exceto os objetos fictícios gerados pelo recoletor de lixo. (O tamanho dos objetos fictícios é de 12 bytes em implementações de 32 bits do CLR; o tamanho é maior em implementações de 64 bits.) Também poderá ver intervalos de geração 2 dentro dos módulos produzidos pelo Gerador de Imagens Nativas (NGen.exe). Neste caso, os objetos na geração 2 são objetos congelados, que são alocados quando NGen.exe é executado em vez do recoletor de lixo.
Esta função utiliza memórias intermédias atribuídas pelo autor da chamada.
Requisitos
Plataformas: Veja Requisitos do Sistema.
Cabeçalho: CorProf.idl, CorProf.h
Biblioteca: CorGuids.lib
.NET Framework Versões: Disponível desde 2.0