Compartilhar via


Método ICorProfilerCallback2::SurvivingReferences

Relata o layout dos objetos na heap sistema autônomo resultado de um lixo sem compactação coleção.

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 sobreviveram sistema autônomo resultado de lixo não compactar coleção. Ou seja, o valor de cSurvivingObjectIDRanges é o dimensionar das objectIDRangeStart e cObjectIDRangeLength arrays, qual armazenamento de um ObjectID e um comprimento, respectivamente, para cada bloco de objetos.

    Os próximos dois argumentos da SurvivingReferences são matrizes paralelas. Em outras palavras, objectIDRangeStart e cObjectIDRangeLength diz respeito a 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íguos, em tempo real a objetos na memória.

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

    Um dimensionar é especificado para cada bloco referenciado no objectIDRangeStart matriz.

Comentários

sistema autônomo elementos do objectIDRangeStart e cObjectIDRangeLength arrays devem ser interpretadas da seguinte maneira para determinar se um objeto sobreviveu o lixo coleção. 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 seguinte intervalo, o objeto sobreviveu o lixo coleção:

0 <= i < cSurvivingObjectIDRanges

Um lixo sem compactação coleção recupera a memória ocupada por objetos "inativos", mas não compacte esse espaço livre. sistema autônomo resultado, memória será retornada à pilha, mas não há objetos "ao vivo" são movidos.

O common linguagem tempo de execução (CLR) chama SurvivingReferences para não compactar coletas de lixo. Para compactar coletas de lixo, ICorProfilerCallback::MovedReferences é chamado em vez disso. Um único lixo coleção pode ser a 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 criador de perfil receberá qualquer 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 um determinado lixo coleção, devido à limitada interno buffer, vários threads relatar no caso de lixo do servidor coleção e por outros motivos. Em caso de vários retornos de chamada durante uma coleta de lixo, as informações são cumulativas — todas as referências que são relatadas no qualquer SurvivingReferences retorno de chamada sobreviver a coleta de lixo.

Requisitos

Plataformas: See Requisitos de sistema do .NET framework.

Cabeçalho: CorProf.idl

Biblioteca: CorGuids.lib

.NET Framework Versions: 3.5 SP1, 3,5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Consulte também

Conceitos

Objeto de acompanhamento na API de criação de perfil

Referência

Interface ICorProfilerCallback

Interface ICorProfilerCallback2