Método ICorProfilerInfo13::CreateHandle
Cria um identificador que encapsula um objeto especificado.
Sintaxe
HRESULT CreateHandle(
[in] ObjectID object,
[in] COR_PRF_HANDLE_TYPE type,
[out] ObjectHandleID* pHandle);
Parâmetros
object
[em] A referência de objeto a ser encapsulada com uma alça.
type
[em] O tipo de identificador a ser criado.
pHandle
[saídas] Um ponteiro fornecido pelo chamador que apontará para o identificador criado para encapsular o .object
Observações
A seguir estão os usos esperados, dependendo do valor especificado COR_PRF_HANDLE_TYPE
:
COR_PRF_HANDLE_TYPE_WEAK
: Monitora se um objeto permanece na memória ao longo do tempo. Se o objeto encapsulado tiver sido coletado, ICorProfilerInfo13::GetObjectIDFromHandle retornará um nullObjectID
.COR_PRF_HANDLE_TYPE_STRONG
: Impõe que um objeto sobreviva às coletas de lixo mesmo que nenhum outro objeto faça referência a ele.COR_PRF_HANDLE_TYPE_PINNED
: O mesmo que uma alça forte, mas também garante que o objeto permaneça no mesmo endereço na memória durante as coletas de lixo.
Para garantir que a object
referência é válida, esse método deve ser chamado de um ICorProfilerCallback
método como ICorProfilerCallback::ObjectAllocated. Não é possível chamar CreateHandle
de um ouvinte assíncrono do EventPipe. O objeto recebido por meio de uma carga útil de evento pode ter sido descartado ou movido na memória se uma coleta de lixo ocorreu entre o momento em que o evento foi emitido e quando foi recebido.
Não se esqueça de chamar ICorProfilerInfo13::D estroyHandle quando um identificador criado não for mais necessário. Recomenda-se ter menos de 4096 alças alocadas ao mesmo tempo para evitar afetar o desempenho do coletor de lixo.
Requisitos
Plataformas: Consulte Sistemas operacionais suportados pelo .NET.
Cabeçalho: CorProf.idl, CorProf.h
Versões do .NET: Disponível desde o .NET 7.0