Método ICorProfilerCallback2::RootReferences2

Notifica o criador de perfil sobre referências raiz após a coleta de lixo. Esse 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 matrizes rootRefIds, rootKinds, rootFlags e rootIds.

rootRefIds
[in] Uma matriz de IDs de objeto, cada uma das quais faz referência a um objeto estático ou a um objeto na pilha. Os elementos na matriz rootKinds fornecem informações para classificar os elementos correspondentes na matriz rootRefIds.

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

rootFlags
[in] Uma matriz de valores COR_PRF_GC_ROOT_FLAGS que descreve as propriedades de uma raiz de coleta 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 de coleta de lixo, dependendo do valor do parâmetro rootKinds.

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

Comentários

As matrizes rootRefIds, rootKinds, rootFlags e rootIds são matrizes paralelas. Ou seja, rootRefIds[i], rootKinds[i], rootFlags[i] e rootIds[i] se preocupam com a mesma raiz.

RootReferences e RootReferences2 são chamados para notificar o criador de perfil. Os profilers normalmente implementarão um método ou outro, mas não ambos, porque as informações passadas em RootReferences2 são um superconjunto do que foi passado.RootReferences

É possível que as entradas em rootRefIds sejam zero, o que implica que a referência raiz correspondente é nula e não se refere a um objeto no heap gerenciado.

As IDs de objeto retornadas por RootReferences2 não são válidas durante o retorno de chamada em si, pois a coleta de lixo pode estar no meio da movimentação de objetos de endereços antigos para novos endereços. Portanto, os criadores de perfis não devem tentar inspecionar objetos durante uma chamada RootReferences2. Quando ICorProfilerCallback2::GarbageCollectionFinished é chamado, todos os objetos já foram movidos para seus novos locais e podem ser inspecionados com segurança.

Requisitos

Plataformas: confira Requisitos do sistema.

Cabeçalho: CorProf.idl, CorProf.h

Biblioteca: CorGuids.lib

Versões do .NET Framework: disponíveis desde 2.0

Confira também