Partilhar via


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

Ver também