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