Partager via


ICorProfilerInfo2::GetGenerationBounds, méthode

Obtient les régions de la mémoire, des segments du tas, qui composent les différentes générations de garbage collection.

HRESULT GetGenerationBounds(
    [in]  ULONG cObjectRanges,
    [out] ULONG *pcObjectRanges,
    [out, size_is(cObjectRanges), length_is(*pcObjectRanges)] COR_PRF_GC_GENERATION_RANGE ranges[]);

Paramètres

  • cObjectRanges
    [in] Nombre d'éléments alloués par l'appelant pour le tableau ranges.

  • pcObjectRanges
    [out] Pointeur vers un entier qui spécifie le nombre total de plages, quelques-unes ou toutes seront retournées dans le tableau ranges.

  • ranges
    [out] Tableau de structures COR_PRF_GC_GENERATION_RANGE, qui décrivent chacune une plage (autrement dit, un bloc) de mémoire dans la génération qui subit le garbage collection.

Notes

La méthode GetGenerationBounds peut être appelée à partir de tout rappel de profileur, à condition que le garbage collection ne soit pas en cours. En d'autres termes, elle peut être appelée à partir de tout rappel, à l'exception de ceux qui interviennent entre ICorProfilerCallback2::GarbageCollectionStarted et ICorProfilerCallback2::GarbageCollectionFinished.

La plupart des décalages de générations ont lieu pendant les opérations de garbage collection. Les générations peuvent devenir plus volumineuses entre les collections, mais elles ne se déplacent généralement pas. Par conséquent, les endroits les plus intéressants pour appeler GetGenerationBounds sont dans ICorProfilerCallback2::GarbageCollectionStarted et ICorProfilerCallback2::GarbageCollectionFinished.

Pendant le démarrage du programme, certains objets sont alloués par le Common Language Runtime (CLR) lui-même, en général dans les générations 3 et 0. Ainsi, lorsque le code managé commence à s'exécuter, ces générations contiennent déjà des objets. Normalement, les générations 1 et 2 sont vides, à l'exception des objets factices qui sont générés par le garbage collector. (La taille des objets factices est de 12 octets dans les implémentations 32 bits du CLR ; elle est plus importante dans les implémentations 64 bits.) Vous verrez peut-être également des plages de génération 2 qui sont contenues dans les modules générés par le générateur d'images natives (NGen.exe). Dans ce cas, les objets dans la génération 2 sont des objets figés qui sont alloués lorsque NGen.exe s'exécute, plutôt que par le garbage collector.

Cette fonction utilise des mémoires tampon allouées par l'appelant. Pour plus d'informations, consultez Conventions de méthode de l'API de profilage.

Configuration requise

Plateformes : consultez Configuration requise du .NET Framework.

En-tête : CorProf.idl, CorProf.h

Bibliothèque : CorGuids.lib

Versions du .NET Framework : 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Voir aussi

Référence

ICorProfilerInfo, interface

ICorProfilerInfo2, interface

Autres ressources

Interfaces de profilage

Profilage (Référence des API non managées)