Fonctionnement de l’allocation de mémoire et des informations de durée de vie des objetsUnderstanding Memory Allocation and Object Lifetime Data Values

La méthode de profilage d’allocation de mémoire .NET des outils de profilage de Visual StudioVisual Studio collecte des informations sur la taille et le nombre d’objets qui ont été créés dans une allocation ou détruits dans un garbage collection, ainsi que des informations supplémentaires sur la pile des appels de la fonction quand l’événement s’est produite.The .NET memory allocation profiling method of Visual StudioVisual Studio Profiling Tools collects information about the size and number of objects that were created in an allocation or destroyed in a garbage collection and additional information about the function call stack when the event occurred. Une pile des appels est une structure dynamique qui stocke des informations sur les fonctions qui s’exécutent sur le processeur.A call stack is a dynamic structure that stores information about the functions that are executing on the processor.

Le profileur de mémoire interrompt le processeur de l’ordinateur à chaque allocation d’un objet du .NET Framework dans une application profilée.The memory profiler interrupts the computer processor at each allocation of a .NET Framework object in a profiled application. Quand les données de durée de vie des objets sont également collectées, le profileur interrompt le processeur après chaque garbage collection du .NET Framework.When object lifetime data is also collected, the profiler interrupts the processor after each .NET Framework garbage collection. Les données sont agrégées pour chaque fonction profilée et pour chaque type d’objet.The data is aggregated for each profiled function and for each type of object.

Données d’allocationAllocation data

Quand un événement de mémoire se produit, les totaux des nombres et des tailles des objets de mémoire alloués ou détruits sont incrémentés.When a .memory event occurs, the total counts and sizes of the allocated or destroyed memory objects are incremented.

Quand un événement d’allocation de mémoire se produit, le profileur incrémente le nombre d’échantillons pour chaque fonction sur la pile des appels.When a .memory allocation event occurs, the profiler increments the sample counts for each function on the call stack. Quand les données sont collectées, une seule fonction sur la pile des appels exécute le code de son corps de fonction.When the data is collected, only one function on the call stack is currently executing the code in its function body. Les autres fonctions sur la pile sont des parents dans la hiérarchie des appels de fonctions qui sont en attente du retour des fonctions qu’elles ont appelées.The other functions on the stack are parents in the hierarchy of function calls that are waiting for the functions that they called to return.

  • Pour l’événement d’allocation, le profileur incrémente le nombre d’échantillons exclusifs de la fonction qui exécute ses instructions.For the allocation event, the profiler increments the exclusive sample count of the function that is currently executing its instructions. Comme un échantillon exclusif fait également partie du total des échantillons (inclusifs) de la fonction, le nombre d’échantillons inclusifs de la fonction active est également incrémenté.Because an exclusive sample is also part of the total (inclusive) samples of the function, the inclusive sample count of the currently active function is also incremented.

  • Le profileur incrémente le nombre d’échantillons inclusifs de toutes les autres fonctions sur la pile des appels.The profiler increments the inclusive sample count of all other functions on the call stack.

Données de durée de vieLifetime data

Dans le récupérateur de mémoire du .NET Framework gère l’allocation et la libération de mémoire pour votre application.The garbage collector of the .NET Framework manages the allocation and release of memory for your application. Pour optimiser les performances du garbage collector, le tas managé est divisé en trois générations : 0, 1 et 2.To optimize the performance of the garbage collector, the managed heap is divided into three generations: 0, 1, and 2. Le récupérateur de mémoire du runtime stocke les nouveaux objets dans la génération 0.The run-time's garbage collector stores new objects in generation 0. Les objets qui survivent aux collectes sont promus et stockés dans les générations 1 et 2.Objects that survive collections are promoted and stored in generations 1 and 2.

Le récupérateur de mémoire récupère de la mémoire en désallouant une génération entière d’objets.The garbage collector reclaims memory by deallocating a whole generation of objects. Pour les objets créés par l’application profilée, la vue Durée de vie des objets montre le nombre et la taille des objets, ainsi que la génération auprès de laquelle ils ont été récupérés.For objects that the profiled application created, the Object Lifetime view displays the number and size of the objects and the generation when they are reclaimed.