Поделиться через


Метод 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 ссылка допустима, этот метод должен вызываться из ICorProfilerCallback такого метода, как ICorProfilerCallback::ObjectAllocated. Не удается вызвать CreateHandle асинхронный прослушиватель EventPipe. Объект, полученный с помощью полезных данных события, может быть удален или перемещен в память, если сборка мусора произошла между временем выдачи события и момента его получения.

Не забудьте вызвать ICorProfilerInfo13::D epple после того, как созданный дескриптор больше не нужен. Рекомендуется одновременно выделить менее 4096 дескрипторов, чтобы избежать влияния на производительность сборщика мусора.

Требования

Платформы: см . поддерживаемые операционные системы .NET.

Заголовок: CorProf.idl, CorProf.h

Версии .NET: доступны с .NET 7.0

См. также