DA0023 : Temps processeur GC élevéDA0023: High GC CPU time

ID de règleRule Id DA0023DA0023
CategoryCategory Utilisation du .NET Framework.NET Framework Usage
Méthode de profilageProfiling method TousAll
MessageMessage % de temps dans GC relativement élevé.% Time in GC is fairly high. 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.This indication of excessive amount of garbage collection overhead could be impacting the responsiveness of your 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.You can gather .NET memory allocation data and object lifetime information to understand the pattern of memory allocation your application uses better.
Type de règleRule type InformationsInformational

Lorsque vous effectuez un profilage à l’aide de la méthode d’échantillonnage, de mémoire .NET ou de conflit des ressources, vous devez collecter au moins 10 échantillons pour déclencher cette règle.When you profile by using the sampling, .NET memory, or resource contention methods, you must collect at least 10 samples to trigger this rule.

CauseCause

Les données relatives aux performances système qui sont collectées pendant le profilage indiquent que le temps consacré au garbage collection est très important, par rapport au temps total de traitement de l’application.System performance data that is collected during profiling indicates that the amount of time that is spent in garbage collection is significant compared with the total application processing time.

Description de la règleRule Description

Le common language runtime (CLR) Microsoft .NET fournit un mécanisme de gestion automatique de la mémoire qui utilise un récupérateur de mémoire pour récupérer la mémoire des objets que l’application n’utilise plus.The Microsoft .NET common language run-time (CLR) provides an automatic memory management mechanism that uses a garbage collector to reclaim memory from objects that the application no longer uses. Le récupérateur de mémoire est orienté génération et repose sur l’hypothèse que de nombreuses allocations sont de courte durée.The garbage collector is generation-oriented, based on the assumption that many allocations are short-lived. Les variables locales, par exemple, doivent avoir une durée de vie courte.Local variables, for example, should be short-lived. Les objets récemment créés commencent à la génération 0 (gen 0), puis progressent jusqu’à la génération 1 lorsqu’ils survivent à l’exécution d’un garbage collection. Enfin, ils passent à la génération 2 si l’application les utilise toujours.Newly created objects start in generation 0 (gen 0), and then they progress to generation 1 when they survive a garbage collection run, and finally transition to generation 2 if the application still uses them.

Les objets de la génération 0 sont collectés fréquemment et généralement de manière très efficace.Objects in generation 0 are collected frequently and usually very efficiently. Les objets de la génération 1 sont collectés moins fréquemment et moins efficacement.Objects in generation 1 are collected less frequently and less efficiently. Enfin, les objets à longue durée de vie de la génération 2 doivent être collectés encore moins fréquemment.Finally, long-lived objects in generation 2 should be collected even less frequently. Le garbage collection de génération 2, qui correspond à un garbage collection complet, constitue l’option la plus coûteuse.Generation 2 collection, which is a full garbage collection run, is also the most expensive operation.

Cette règle se déclenche lorsque le temps consacré au garbage collection est très important, par rapport au temps total de traitement de l’application.This rule fires when the amount of time that is spent in garbage collection is significant compared with the total application processing time.

Note

Lorsque le temps consacré au garbage collection est excessif par rapport au temps total de traitement de l’application, l’avertissement DA0024 : Temps CPU GC excessif est déclenché à la place de cette règle.When the proportion of time that is spent in garbage collection is excessive compared with the total application processing time, the DA0024: Excessive GC CPU Time warning fires instead of this rule.

Comment rechercher la cause d’un avertissementHow to Investigate a Warning

Double-cliquez sur le message dans la fenêtre Liste d’erreurs pour accéder à la vue Marques des données de profilage.Double-click the message in the Errors List window to navigate to the Marks View of the profiling data. Accédez à la colonne Mémoire CLR .NET\% temps dans le GC.Find the .NET CLR Memory\% Time in GC column. Déterminez s’il existe des phases spécifiques de l’exécution du programme durant lesquelles la surcharge du garbage collection de mémoire managée est plus importante.Determine if there are specific phases of program execution where the overhead of managed memory garbage collection is heavier than other phases. Comparez les valeurs de la colonne % temps dans le GC au taux du garbage collection des colonnes Nombre de collections de la génération 0, Nombre de collections de la génération 1 et Nombre de collections de la génération 2.Compare the values of the % Time in GC value to the rate of garbage collection reported in the # of Gen 0 Collections, # of Gen 1 Collections, # of Gen 2 Collections values.

La colonne % temps dans le GC contient le pourcentage de temps qu’une application a consacré au garbage collection, proportionnellement au temps total de traitement.The % Time in GC value tries to report the amount of time that an application spends performing garbage collection proportional to the total amount of processing. Toutefois, il se peut que cette valeur soit très élevée, sans qu’un garbage collection excessif ne soit en cause.Be aware that there are circumstances when the % Time in GC value can report a very high value, but it is not because of excessive garbage collection. Pour plus d’informations sur la façon dont est calculée la valeur de la colonne % temps dans le GC, consultez le billet Difference Between Perf Data Reported by Different Tools - 4 du blog Maoni's Weblog sur MSDN.For more information about the way the % Time in GC value is calculated, see the Difference Between Perf Data Reported by Different Tools - 4 entry of Maoni's Weblog on MSDN. Si des erreurs de page se produisent ou si l’application est devancée par d’autres tâches prioritaires sur l’ordinateur pendant le garbage collection, les valeurs du compteur % temps dans le GC refléteront ces retards supplémentaires.If page faults are occurring or the application is preempted by other higher priority work on the machine during garbage collection, the % Time in GC counter will reflect those additional delays.