Compartilhar via


Método ICorProfilerInfo2::GetGenerationBounds

Obtém as regiões de memória, que são segmentos do heap, que compõem as várias gerações de coleta 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 chamador para a matriz ranges.

pcObjectRanges
[out] Um ponteiro para um inteiro que especifica o número total de intervalos, alguns ou todos os quais serão retornados na matriz ranges.

ranges
[out] 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á passando pela coleta de lixo.

Comentários

O método GetGenerationBounds pode ser chamado de qualquer retorno de chamada do criador de perfil, desde que a coleta de lixo não esteja em andamento.

A maioria das mudanças de gerações ocorre durante as coletas de lixo. As gerações podem crescer entre as coleções, mas geralmente não se movem. Portanto, os lugares mais interessantes para chamar GetGenerationBounds estão em ICorProfilerCallback2::GarbageCollectionStarted e ICorProfilerCallback2::GarbageCollectionFinished.

Durante a inicialização do programa, alguns objetos são alocados pelo próprio Common Language Runtime (CLR), geralmente nas gerações 3 e 0. Assim, quando o código gerenciado começar a ser executado, essas gerações já conterão objetos. As gerações 1 e 2 normalmente estarão vazias, exceto para objetos fictícios que são gerados pelo coletor 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). Você também pode ver intervalos de geração 2 que estão dentro de módulos produzidos pelo Gerador de Imagem Nativa (NGen.exe). Nesse caso, os objetos na geração 2 são objetos congelados, que são alocados quando o NGen.exe é executado em vez do coletor de lixo.

Essa função usa buffers alocados por chamador.

Requisitos

Plataformas: confira Requisitos do sistema.

Cabeçalho: CorProf.idl, CorProf.h

Biblioteca: CorGuids.lib

Versões do .NET Framework: disponíveis desde 2.0

Confira também