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 rootRefIds
matrizes , rootKinds
, rootFlags
e 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 rootRefIds
matrizes , rootKinds
, rootFlags
e 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