Dela via


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 null ObjectID.
  • 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

Se även