Méthode ICorProfilerInfo13::CreateHandle
Crée un descripteur qui enveloppe un objet spécifié.
Syntaxe
HRESULT CreateHandle(
[in] ObjectID object,
[in] COR_PRF_HANDLE_TYPE type,
[out] ObjectHandleID* pHandle);
Paramètres
object
[in] Référence d’objet à inclure dans un wrapper avec un descripteur.
type
[in] Type de descripteur à créer.
pHandle
[out] Pointeur fourni par l’appelant qui pointe vers le descripteur créé pour envelopper le .object
Notes
Voici les utilisations attendues en fonction de la valeur spécifiée de COR_PRF_HANDLE_TYPE
:
COR_PRF_HANDLE_TYPE_WEAK
: surveille si un objet reste en mémoire au fil du temps. Si l’objet encapsulé a été collecté, ICorProfilerInfo13::GetObjectIDFromHandle retourne une valeurObjectID
nulle.COR_PRF_HANDLE_TYPE_STRONG
: force un objet à survive aux garbage collections même si aucun autre objet ne le référence.COR_PRF_HANDLE_TYPE_PINNED
: identique à un descripteur fort, mais garantit également que l’objet reste à la même adresse en mémoire pendant les garbage collections.
Pour vous assurer que la référence object
est valide, cette méthode doit être appelée à partir d’une méthode ICorProfilerCallback
telle que ICorProfilerCallback::ObjectAllocated. Vous ne pouvez pas appeler CreateHandle
à partir d’un écouteur asynchrone EventPipe. L’objet reçu via une charge utile d’événement a peut-être été supprimé ou déplacé en mémoire si un garbage collection s’est produit entre le moment où l’événement a été émis et le moment où il a été reçu.
N’oubliez pas d’appeler ICorProfilerInfo13::D estroyHandle une fois que le descripteur créé n’est plus nécessaire. Il est recommandé d’avoir moins de 4 096 descripteurs alloués en même temps pour éviter d’affecter les performances du récupérateur de mémoire.
Spécifications
Plateformes : Consultez Systèmes d’exploitation pris en charge par .NET.
En-tête : CorProf.idl, CorProf.h
Versions de .NET : Disponible depuis .NET 7.0