Partilhar via


Método ICorProfilerCallback2::RootReferences2

Notifica o gerador de perfis sobre as referências de raiz após a origem de uma recolha de lixo. Este método é uma extensão do método ICorProfilerCallback::RootReferences .

Sintaxe

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 nas rootRefIdsmatrizes , rootKinds, rootFlagse rootIds .

rootRefIds
[in] Uma matriz de IDs de objeto, cada um dos quais referencia um objeto estático ou um objeto na pilha. Os elementos na rootKinds matriz fornecem informações para classificar os elementos correspondentes na rootRefIds matriz.

rootKinds
[in] Uma matriz de valores de COR_PRF_GC_ROOT_KIND que indicam o tipo da raiz da libertação do lixo.

rootFlags
[in] Uma matriz de valores COR_PRF_GC_ROOT_FLAGS que descrevem as propriedades de uma raiz de libertação de lixo.

rootIds
[in] Uma matriz de valores UINT_PTR que apontam para um número inteiro que contém informações adicionais sobre a raiz da recolha de lixo, consoante o valor do rootKinds parâmetro.

Se o tipo de raiz for uma pilha, o ID de raiz destina-se à função que contém a variável. Se esse ID de raiz for 0, a função é uma função sem nome interna do CLR. Se o tipo de raiz for uma alça, o ID de raiz destina-se à alça de recolha de lixo. Para os outros tipos de raiz, o ID é um valor opaco e deve ser ignorado.

Observações

As rootRefIdsmatrizes , rootKinds, rootFlagse rootIds são matrizes paralelas. Ou seja, rootRefIds[i], rootKinds[i], rootFlags[i]e rootIds[i] todos dizem respeito à mesma raiz.

Ambos RootReferences e RootReferences2 são chamados para notificar o gerador de perfis. Normalmente, os profilers implementam um método ou outro, mas não ambos, porque as informações transmitidas são RootReferences2 um superconjunto do que foi transmitido em RootReferences.

É possível que as entradas em rootRefIds sejam zero, o que implica que a referência de raiz correspondente é nula e não se refere a um objeto na área de dados gerida.

Os IDs de objeto devolvidos por RootReferences2 não são válidos durante a chamada de retorno propriamente dita, uma vez que a coleção de lixo pode estar no meio da movimentação de objetos de endereços antigos para novos endereços. Por conseguinte, os perfis não devem tentar inspecionar objetos durante uma RootReferences2 chamada. Quando iCorProfilerCallback2::GarbageCollectionFinished é chamado, todos os objetos foram movidos para as suas novas localizações e podem ser inspecionados em segurança.

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