Compartilhar via


Método de ICorProfilerCallback2::RootReferences2

Notifica o profiler sobre referências de raiz após a ocorrência de uma coleta de lixo. Esse método é uma extensão de ICorProfilerCallback::RootReferences método.

HRESULT RootReferences2(
    [in] ULONG  cRootRefs,
    [in, size_is(cRootRefs)] ObjectID rootRefIds[],
    [in, size_is(cRootRefs)] COR_PRF_GC_ROOT_KIND rootKinds[],
    [in, size_is(cRootRefs)] COR_PRF_GC_ROOT_FLAGS rootFlags[],
    [in, size_is(cRootRefs)] UINT_PTR rootIds[]);

Parâmetros

  • cRootRefs
    [in] O número de elementos de rootRefIds, rootKinds, rootFlags, e rootIds arrays.

  • rootRefIds
    [in] Uma matriz de identificadores de objetos, cada um deles faz referência a um objeto estático ou um objeto na pilha. Elementos de rootKinds matriz fornecem informações para classificar os elementos correspondentes na rootRefIds matriz.

  • rootKinds
    [in] Uma matriz de COR_PRF_GC_ROOT_KIND valores que indicam o tipo de raiz de coleta de lixo.

  • rootFlags
    [in] Uma matriz de COR_PRF_GC_ROOT_FLAGS valores que descrevem as propriedades de uma raiz de coleta de lixo.

  • rootIds
    [in] Desse ponto em um número inteiro que contém informações adicionais sobre a raiz de coleta de lixo, dependendo do valor de valores de uma matriz de UINT_PTR a rootKinds parâmetro.

    Se o tipo de raiz é uma pilha, a identificação de raiz é a função que contém a variável. Se essa ID raiz for 0, a função é uma função sem nome, é interna ao CLR. Se o tipo de raiz é um identificador, a identificação de raiz é o identificador de coleta de lixo. Para outros tipos de raiz, a identificação é um valor opaco e deve ser ignorada.

Comentários

O rootRefIds, rootKinds, rootFlags, e rootIds as matrizes são matrizes paralela. Ou seja, rootRefIds[i], rootKinds[i], rootFlags[i], e rootIds[i] preocupação todos a mesma raiz.

Ambos RootReferences e RootReferences2 são chamados para notificar o profiler. Geradores de perfis serão normalmente implementam um método ou a outra, mas não ambos, porque as informações passadas na RootReferences2 é um superconjunto do que é passado em RootReferences.

É possível que as entradas rootRefIds zero, o que significa que a referência de raiz correspondente é nula e não faz referência a um objeto no heap gerenciado.

O IDs de objeto retornado por RootReferences2 não são válidos durante o retorno de chamada, porque a coleta de lixo pode estar no meio da movimentação de objetos de endereços antigos para novos endereços. Portanto, geradores de perfis não devem tentar inspecionar objetos durante um RootReferences2 chamada. Quando ICorProfilerCallback2::GarbageCollectionFinished é chamado, todos os objetos foram movidos para suas novas localizações e podem ser olhados com segurança.

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