Fonctionnement de l'allocation de mémoire et des informations de durée de vie des objets dans les outils de profilage
La méthode de profilage d'allocation de mémoire .NETdes outils de profilage Visual Studio collecte des informations sur la taille et le nombre d'objets qui ont été créés dans une allocation ou ont été détruits dans un garbage collection, ainsi que des informations supplémentaires à propos de la pile des appels de fonction lorsque l'événement s'est produit.Une pile des appels est une structure dynamique qui stocke des informations sur les fonctions exécutées sur le processeur.
Configuration requise
- Visual Studio Ultimate, Visual Studio Premium, Visual Studio Professional
La méthode de profilage d'allocation de mémoire .NET interrompt le processeur de l'ordinateur à chaque allocation d'un objet .NET Framework dans une application profilée.Lorsque les données de durée de vie de l'objet sont également collectées, le profileur interrompt le processeur après chaque garbage collection .NET Framework.Les données sont regroupées pour chaque fonction profilée et pour chaque type d'objet.
Données d'allocation
Lorsqu'un événement .memory se produit, le nombre total et la taille de tous les objets mémoire alloués ou détruits sont incrémentés.
Lorsqu'un événement d'allocation .memory se produit, le profileur incrémente le nombre d'échantillons pour chaque fonction sur la pile des appels.Lors de la collecte des données, une seule fonction sur la pile des appels exécute actuellement le code dans son corps.Les autres fonctions de la pile sont des parents dans la hiérarchie des appels de fonction qui attendent le retour des fonctions qu'ils ont appelées.
Pour l'événement d'allocation, le profileur incrémente le nombre d'échantillons exclusifs de la fonction qui exécute actuellement ses instructions.Étant donné qu'un échantillon exclusif fait également partie du nombre total d'échantillons (inclusifs) de la fonction, le nombre d'échantillons inclusifs de la fonction actuellement active est également incrémenté.
Le profileur incrémente le nombre d'échantillons inclusifs de toutes les autres fonctions dans la pile des appels.
Données de durée de vie
Le garbage collector (également appelé ramasse-miettes) du .NET Framework manage l'allocation et la libération de mémoire dans votre application.Pour optimiser les performances du garbage collector, le tas managé est divisé en trois générations : 0, 1 et 2.Le garbage collector du runtime stocke les nouveaux objets dans la génération 0.Les objets qui survivent aux collectes sont promus et stockés dans les générations 1 et 2.
Le garbage collector libère de la mémoire en libérant une génération entière d'objets.Pour les objets créés par l'application profilée, le mode Durée de vie de l'objet affiche le nombre et la taille des objets, ainsi que la génération depuis laquelle ils sont libérés.