Partilhar via


Método de ICorProfilerCallback2::SurvivingReferences

Relata o layout dos objetos na heap como resultado de uma coleta de lixo não compactar.

HRESULT SurvivingReferences(
    [in] ULONG  cSurvivingObjectIDRanges,
    [in, size_is(cSurvivingObjectIDRanges)] ObjectID
                objectIDRangeStart[] ,
    [in, size_is(cSurvivingObjectIDRanges)] ULONG
                cObjectIDRangeLength[] );

Parâmetros

  • cSurvivingObjectIDRanges
    [in] O número de blocos contíguos objetos que sobreviveram como resultado de coleta de lixo não compactar. Ou seja, o valor de cSurvivingObjectIDRanges é o tamanho da objectIDRangeStart e cObjectIDRangeLength arrays, qual armazenamento de um ObjectID e um comprimento, respectivamente, para cada bloco de objetos.

    Os próximos dois argumentos de SurvivingReferences são matrizes em paralelo. Em outras palavras, objectIDRangeStart e cObjectIDRangeLength a preocupação do mesmo bloco contíguo de objetos.

  • objectIDRangeStart
    [in] Uma matriz de ObjectID valores, cada um deles é o endereço inicial de um bloco de contíguo, live objetos na memória.

  • cObjectIDRangeLength
    [in] Uma matriz de inteiros, cada um deles é o tamanho de um bloco sobrevivente de objetos contíguos na memória.

    Um tamanho especificado para cada bloco mencionada no objectIDRangeStart matriz.

Comentários

Os elementos de objectIDRangeStart e cObjectIDRangeLength matrizes devem ser interpretadas como a seguir para determinar se um objeto sobreviveu a coleta de lixo. Suponha que um ObjectID valor (ObjectID) se encontra no seguinte intervalo:

ObjectIDRangeStart[i] <= ObjectID < ObjectIDRangeStart[i] + cObjectIDRangeLength[i]

Para qualquer valor de i que está no intervalo seguinte, o objeto sobreviveu a coleta de lixo:

0 <= i < cSurvivingObjectIDRanges

Uma coleta de lixo não compactar recupera a memória ocupada por "inativo" objetos, mas não compacta que o espaço livre. Como resultado, a memória é retornada à pilha, mas não "live" objetos são movidos.

O common language runtime (CLR) chama SurvivingReferences para não compactar lixo coleções. Para compactar coletas de lixo, ICorProfilerCallback::MovedReferences é chamado em vez disso. Uma coleta de lixo único pode ser compactação para uma geração e não-compactação para outro. Para uma coleta de lixo de qualquer geração específica, o profiler será exibido um SurvivingReferences retorno de chamada ou um MovedReferences retorno de chamada, mas não ambos.

Vários SurvivingReferences retornos de chamada podem ser recebidos durante uma coleta de lixo específico, devido à limitada interno buffer, vários threads, emissão de relatórios em caso de coleta de lixo do servidor e outros motivos. No caso de vários retornos de chamada durante uma coleta de lixo, as informações são cumulativas — todas as referências são relatadas em qualquer SurvivingReferences retorno de chamada de sobreviver a coleta de lixo.

Requisitos

Plataformas: Consulte Requisitos de sistema do .NET Framework.

Cabeçalho: Corprof. idl, CorProf.h

Biblioteca: CorGuids.lib

.NET Framework versões: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Consulte também

Referência

Interface de ICorProfilerCallback

Interface de ICorProfilerCallback2

Conceitos

A API de criação de perfil de rastreamento de objeto