DA0023 : temps processeur GC élevé
ID de la règle |
DA0023 |
Catégorie |
Utilisation du .NET Framework |
Méthode de profilage |
Tous |
Message |
% de temps dans GC relativement élevé.Cela indique un volume de surcharge de garbage collection trop élevé qui peut avoir un impact sur le taux de réponse de votre application.Vous pouvez regrouper les données d'allocation de mémoire .NET et les informations de durée de vie des objets afin de mieux comprendre le modèle d'allocation de mémoire utilisé par votre application. |
Type de règle |
Informations |
Lorsque vous profilez en utilisant les méthodes d'échantillonnage, de mémoire. NET ou de conflits de ressources, vous devez collecter au moins 10 échantillons pour déclencher cette règle.
Cause
Les données des performances système collectées pendant le profilage indiquent que le temps passé dans le garbage collection est significatif comparé au temps total de traitement de l'application.
Description de la règle
Le CLR (Common Language Runtime) 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 le temps passé dans le garbage collection est significatif comparé au temps total de traitement de l'application.
[!REMARQUE]
Lorsque la proportion de temps passé dans le garbage collection est significative mais pas excessive comparé au temps total de traitement de l'application, c'est l'avertissement DA0024 : temps processeur GC excessif qui se déclenche à la place de cette règle.
Comment examiner un avertissement
Double-cliquez sur le message dans la fenêtre Liste d'erreurs pour naviguer jusqu'à l'Marques, vue des données de profilage.Recherchez la colonne Mémoire CLR .NET\% Temps dans le GC.Déterminez s'il existe des phases spécifiques de l'exécution du programme où la surcharge de l'opération garbage collection de mémoire managée est plus importante que dans d'autres phases.Comparez les valeurs du compteur % Temps dans le GC au taux de garbage collection signalé dans les valeurs de Nombre de collections de la génération 0, Nombre de collections de la génération 1, Nombre de collections de la génération 2.
La valeur de % de temps dans le GC essaie de signaler le temps passé par une application à traiter le garbage collection proportionnellement au temps total de traitement.Gardez à l'esprit qu'il est possible dans certaines circonstances que le compteur % Temps dans le GC indique une valeur très élevée, mais ce n'est pas en raison d'une utilisation excessive de garbage collection.Pour plus d'informations sur le mode de calcul de la valeur de % de temps dans le GC, consultez l'entrée Différence entre les données de performance signalées par différents outils – 4 (page éventuellement en anglais) dans Maoni's Weblog sur le site MSDN.Si des erreurs se produisent sur des pages ou si l'application est préemptée sur l'ordinateur par autre travail à priorité élevée pendant le garbage collection, le compteur de % de temps dans le GC reflétera ces délais supplémentaires.