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
[in] A referência de objeto a ser encapsulada com um identificador.
type
[in] O tipo de identificador a ser criado.
pHandle
[out] Um ponteiro fornecido pelo chamador que apontará para o identificador criado para encapsular o object
especificado.
Comentários
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á umObjectID
nulo.COR_PRF_HANDLE_TYPE_STRONG
: impõe que um objeto sobreviva às coletas de lixo mesmo que nenhum outro objeto o referencie.COR_PRF_HANDLE_TYPE_PINNED
: o mesmo que um identificador 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 referência object
seja válida, esse método precisa ser chamado de um método ICorProfilerCallback
como ICorProfilerCallback::ObjectAllocated. Você não pode chamar CreateHandle
de um ouvinte assíncrono do EventPipe. O objeto recebido por meio de uma carga de evento pode ter sido descartado ou movido na memória se tiver ocorrido uma coleta de lixo entre o momento em que o evento foi emitido e quando ele foi recebido.
Não se esqueça de chamar ICorProfilerInfo13::DestroyHandle depois que um identificador criado não for mais necessário. É recomendável ter menos de 4.096 identificadores alocados ao mesmo tempo para evitar afetar o desempenho do coletor de lixo.
Requisitos
Plataformas: consulte Sistemas operacionais compatíveis com .NET.
Cabeçalho: CorProf.idl, CorProf.h
Versões do .NET: disponível desde o .NET 7.0