Partager via


ICorProfilerInfo2::GetGenerationBounds, méthode

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

Syntaxe

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, dont une partie ou la totalité sera retournée dans le tableau ranges.

ranges
[sortie] 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 fait l’objet d’un 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 d'exécution.

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, quand 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 quand NGen.exe s’exécute, plutôt que par le garbage collector.

Cette fonction utilise des mémoires tampons allouées par l'appelant.

Spécifications

Plateformes : Consultez Configuration requise.

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

Bibliothèque : CorGuids.lib

Versions de .NET Framework : Disponible depuis la version 2.0

Voir aussi