ICorProfilerInfo13::CreateHandle-metod
Skapar ett handtag som omsluter ett angivet objekt.
Syntax
HRESULT CreateHandle(
[in] ObjectID object,
[in] COR_PRF_HANDLE_TYPE type,
[out] ObjectHandleID* pHandle);
Parametrar
object
[i] Objektreferensen som ska omslutas med ett handtag.
type
[i] Typ av handtag som ska skapas.
pHandle
[ut] En pekare som tillhandahålls av anroparen och som pekar på handtaget som skapats för att omsluta den angivna object
.
Kommentarer
Följande är de förväntade användningarna beroende på det angivna COR_PRF_HANDLE_TYPE
värdet:
COR_PRF_HANDLE_TYPE_WEAK
: Övervakar om ett objekt förblir i minnet över tid. Om det omslutna objektet har samlats in returnerar ICorProfilerInfo13::GetObjectIDFromHandle en nullObjectID
.COR_PRF_HANDLE_TYPE_STRONG
: Framtvingar att ett objekt överlever skräpsamlingar även om inget annat objekt refererar till det.COR_PRF_HANDLE_TYPE_PINNED
: Samma som ett starkt handtag men säkerställer också att objektet förblir på samma adress i minnet under skräpsamlingar.
För att säkerställa att referensen object
är giltig måste den här metoden anropas från en ICorProfilerCallback
metod som ICorProfilerCallback::ObjectAllocated. Du kan inte anropa CreateHandle
från en asynkron EventPipe-lyssnare. Objektet som tas emot via en händelsenyttolast kan ha tagits bort eller flyttats i minnet om en skräpinsamling inträffade mellan den tidpunkt då händelsen skickades och när den togs emot.
Glöm inte att anropa ICorProfilerInfo13::D estroyHandle när ett skapat handtag inte längre behövs. Vi rekommenderar att mindre än 4 096 handtag allokeras samtidigt för att undvika att påverka skräpinsamlarens prestanda.
Behov
Plattformar: Se operativsystem som stöds av .NET.
Rubrik: CorProf.idl, CorProf.h
.NET-versioner: Finns sedan .NET 7.0