建立包裝指定物件的句柄。
語法
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 會傳回 NullObjectID。 -
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 起提供