Метод 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 возвращает значение NULLObjectID
.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