Partager via


DA0005 : Collections GC2 fréquentes

Id de la règle

DA0005

Catégorie

Utilisation du .NET Framework

Méthode de profilage

Mémoire .NET

Message

De nombreux objets sont collectés dans un garbage collection gen2.

Type de message

Avertissement

Cause

Un nombre élevé d'objets mémoire .NET est libéré dans le garbage collection de 2e génération.

Description de la règle

Le CLR Microsoft .NET offre un mécanisme de gestion automatique de la mémoire qui utilise un garbage collector pour libérer la mémoire des objets que l'application n'utilise plus.Le garbage collector est orienté génération, basé sur l'hypothèse que de nombreuses allocations ont une courte durée de vie.Les variables locales, par exemple, doivent avoir une courte durée de vie.Les objets nouvellement créés commencent à la génération 0 (gen 0),puis progressent jusqu'à la génération 1 lorsqu'ils survivent à une exécution de garbage collection et effectuent enfin une transition vers la génération 2 si l'application les utilise encore.

Les objets de la génération 0 sont collectés fréquemment et généralement de façon très efficace.Les objets de la génération 1 sont collectés moins fréquemment et de façon moins efficace.Enfin, les objets à longue durée de vie dans la génération 2 doivent être collectés moins fréquemment encore.La collection de génération 2, qui est une exécution de garbage collection complet, est également l'opération la plus coûteuse.

Cette règle se déclenche lorsque proportionnellement trop de garbage collections de génération 2 se sont produits.Si trop d'objets relativement éphémères subsistent de la collection de génération 1 mais sont ensuite capables d'être collectés dans une collection complète de génération 2, le coût de gestion de la mémoire peut facilement devenir excessif.Pour plus d'informations, consultez la publication Crise de la cinquantaine (page éventuellement en anglais) dans Rico Mariani's Performance Tidbits sur le site Web MSDN.

Comment examiner un avertissement

Examinez les rapports Vues de données de mémoire .NET des outils de profilage pour comprendre le modèle d'allocation de mémoire de l'application.Utilisez l'Mode Durée de vie de l'objet pour déterminer quels sont les objets de données du programme qui survivent dans la génération 2 et qui sont ensuite récupérés.Utilisez l'Mode Allocations de mémoire .NET pour déterminer le chemin d'exécution ayant entraîné ces allocations.

Pour plus d'informations sur l'amélioration des performances d'une opération garbage collection, consultez Garbage Collector Basics and Performance Hints (page éventuellement en anglais) sur le site Web Microsoft.Pour plus d'informations sur la surcharge d'une opération garbage collection automatique, consultez Le tas des objets volumineux dévoilé.