Bagikan melalui


Metode ICorProfilerInfo13::CreateHandle

Membuat handel yang membungkus objek tertentu.

Sintaks

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

Parameter

object
[di] Referensi objek untuk dibungkus dengan handel.

type
[di] Jenis handel yang akan dibuat.

pHandle
[out] Penunjuk yang disediakan penelepon yang akan menunjuk ke handel yang dibuat untuk membungkus object.

Keterangan

Berikut ini adalah penggunaan yang diharapkan tergantung pada nilai yang ditentukan COR_PRF_HANDLE_TYPE :

  • COR_PRF_HANDLE_TYPE_WEAK: Memantau apakah objek tetap dalam memori dari waktu ke waktu. Jika objek yang dibungkus telah dikumpulkan, ICorProfilerInfo13::GetObjectIDFromHandle mengembalikan null ObjectID.
  • COR_PRF_HANDLE_TYPE_STRONG: Memberlakukan bahwa objek bertahan dari pengumpulan sampah bahkan jika tidak ada objek lain yang mereferensikannya.
  • COR_PRF_HANDLE_TYPE_PINNED: Sama seperti handel yang kuat tetapi juga memastikan bahwa objek tetap berada di alamat yang sama dalam memori selama pengumpulan sampah.

Untuk memastikan bahwa object referensi valid, metode ini harus dipanggil dari ICorProfilerCallback metode seperti ICorProfilerCallback::ObjectAllocated. Anda tidak dapat memanggil CreateHandle dari pendengar asinkron EventPipe. Objek yang diterima melalui payload peristiwa mungkin telah dibuang atau dipindahkan dalam memori jika pengumpulan sampah terjadi antara waktu peristiwa dipancarkan dan ketika diterima.

Jangan lupa untuk memanggil ICorProfilerInfo13::D estroyHandle setelah handel yang dibuat tidak lagi diperlukan. Disarankan untuk memiliki kurang dari 4096 handel yang dialokasikan pada saat yang sama untuk menghindari dampak kinerja pengumpul sampah.

Persyaratan

Platform: Lihat sistem operasi yang didukung .NET.

Header: CorProf.idl, CorProf.h

Versi .NET: Tersedia sejak .NET 7.0

Lihat juga