共用方式為


ICorProfilerInfo13::CreateHandle 方法

建立包裝指定物件的句柄。

語法

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

參數

object
[in]要用句柄包裝的對象參考。

type
[in]要建立的句柄類型。

pHandle
[out]呼叫端提供的指標,指向建立的句柄,以包裝指定的 object

備註

以下是預期的使用量,視指定的 COR_PRF_HANDLE_TYPE 值而定:

  • COR_PRF_HANDLE_TYPE_WEAK:監視物件在一段時間內是否停留在記憶體中。 如果已收集包裝的物件, ICorProfilerInfo13::GetObjectIDFromHandle 會傳回 Null ObjectID
  • COR_PRF_HANDLE_TYPE_STRONG:強制物件在垃圾收集中倖存下來,即使沒有其他對象參考它也一樣。
  • COR_PRF_HANDLE_TYPE_PINNED:與強句柄相同,但也可確保物件在垃圾收集期間保留在記憶體中的相同位址。

object為了確保參考有效,必須從 ICorProfilerCallbackICorProfilerCallback::ObjectAllocated 等方法呼叫這個方法。 您無法從 EventPipe 異步接聽程式呼叫 CreateHandle 。 如果垃圾收集發生在事件發出和收到事件的時間之間,則透過事件承載接收的物件可能已處置或移至記憶體中。

別忘了不再需要建立的句柄之後,呼叫 ICorProfilerInfo13::D estroyHandle 。 建議同時配置少於 4096 個句柄,以避免影響垃圾收集行程的效能。

需求

平臺: 請參閱 .NET 支援的作系統

頁眉: CorProf.idl、CorProf.h

.NET 版本: 自 .NET 7.0 起提供

另請參閱