Freigeben über


ICorProfilerInfo13::CreateHandle-Methode

Erstellt ein Handle, das ein angegebenes Objekt umschließt.

Syntax

    HRESULT CreateHandle(
                [in] ObjectID            object,
                [in] COR_PRF_HANDLE_TYPE type,
                [out] ObjectHandleID*    pHandle);

Die Parameter

object
[in] Der Objektverweis, der mit einem Handle umbrochen werden soll.

type
[in] Der Typ des zu erstellenden Handles.

pHandle
[out] Ein vom Aufrufer bereitgestellter Zeiger, der auf das handle verweist, das zum Umbrechen des angegebenen objectHandles erstellt wurde.

Bemerkungen

Im Folgenden sind die erwarteten Verwendungen abhängig vom angegebenen COR_PRF_HANDLE_TYPE Wert aufgeführt:

  • COR_PRF_HANDLE_TYPE_WEAK: Überwacht, ob ein Objekt im Arbeitsspeicher im Laufe der Zeit verbleibt. Wenn das umschlossene Objekt erfasst wurde, gibt ICorProfilerInfo13::GetObjectIDFromHandle einen Nullwert ObjectIDzurück.
  • COR_PRF_HANDLE_TYPE_STRONG: Erzwingt, dass ein Objekt die Garbage Collections überlebt, auch wenn kein anderes Objekt darauf verweist.
  • COR_PRF_HANDLE_TYPE_PINNED: Identisch mit einem starken Handle, stellt aber auch sicher, dass das Objekt während der Garbage Collections an derselben Adresse im Arbeitsspeicher bleibt.

Um sicherzustellen, dass der object Verweis gültig ist, muss diese Methode von einer ICorProfilerCallback Methode wie ICorProfilerCallback::ObjectAllocated aufgerufen werden. Sie können von einem asynchronen EventPipe-Listener nicht aufrufen CreateHandle . Das über eine Ereignisnutzlast empfangene Objekt wurde möglicherweise verworfen oder im Arbeitsspeicher verschoben, wenn zwischen dem Zeitpunkt, zu dem das Ereignis ausgegeben wurde, eine Garbage Collection aufgetreten ist und wann es empfangen wurde.

Vergessen Sie nicht, ICorProfilerInfo13::D estroyHandle aufzurufen, sobald ein erstelltes Handle nicht mehr benötigt wird. Es wird empfohlen, weniger als 4096 Ziehpunkte gleichzeitig zugeordnet zu haben, um zu vermeiden, dass sich die Leistung des Garbage Collectors auswirkt.

Anforderungen

Plattformen: Siehe .NET unterstützte Betriebssysteme.

Kopfball: CorProf.idl, CorProf.h

.NET-Versionen: Verfügbar seit .NET 7.0

Siehe auch