Garbage collection
Mise à jour : novembre 2007
Le garbage collector (également appelé ramasse-miettes) du .NET Framework manage l'allocation et la libération de mémoire dans votre application. Chaque fois que vous utilisez l'opérateur newpour créer un objet, le runtime alloue de la mémoire à l'objet à partir du tas managé. Tant que de l'espace d'adressage est disponible dans le tas managé, le runtime continue à allouer de l'espace pour les nouveaux objets. Toutefois, la mémoire n'est pas infinie. Le garbage collector doit finir par effectuer un garbage collection afin de libérer de la mémoire. Le moteur d'optimisation du garbage collector détermine le meilleur moment pour effectuer un garbage collection en fonction des allocations en cours. Lorsque le garbage collector effectue un garbage collection, il recherche les objets figurant dans le tas managé qui ne sont plus utilisés par l'application et effectue les opérations nécessaires pour récupérer leur mémoire.
Cette section décrit comment le garbage collector manage automatiquement l'allocation et la libération de mémoire pour les objets managés figurant dans votre application. De plus, elle décrit le modèle de design recommandé pour nettoyer correctement toutes les ressources non managées créées par votre application.
Remarque : |
---|
Dans la version 1.0 du .NET Framework, le Common Language Runtime (CLR) possède un gestionnaire de mémoire séparé pour le tas des objets volumineux. Dans certaines circonstances, ce gestionnaire de mémoire ne retourne pas la mémoire inutilisée au système d'exploitation et, parfois, ne rend pas la mémoire disponible pour le garbage collection. Cela se traduit par un échec d'allocation de mémoire dû à la fragmentation de l'espace d'adressage virtuel. Dans les versions 1.1 et 2.0 du .NET Framework, le tas des objets volumineux est composé de zones de mémoire contiguës appelées « segments de tas », correctement alignés pour limiter la fragmentation de la mémoire virtuelle. Pendant le garbage collection, l'espace libéré par des objets volumineux est consolidé et placé dans une liste libre. Les segments de tas qui contiennent uniquement des éléments de liste libres sont libérés et la mémoire est retournée au système d'exploitation. Ces modifications apportées au tas des objets volumineux ont ainsi éliminé les échecs d'allocation de mémoire dus à ce type de fragmentation de l'espace d'adressage virtuel. |
Remarque importante : |
---|
Sur les serveurs disposant de plus de 2 Go de mémoire, il peut être nécessaire de spécifier le commutateur /3GB dans le fichier boot.ini pour éviter des problèmes de mémoire apparemment insuffisante alors que le système possède encore de la mémoire disponible. |
Dans cette section
Expérience des développeurs dans le domaine de la gestion de la mémoire
Décrit les mises au point que les développeurs, qui étaient habitués à utiliser Visual Basic, C++ et COM, doivent effectuer lors de leur passage au code managé.Destructeurs et méthodes Finalize
Décrit comment les destructeurs et les méthodes Finalize permettent à un objet d'effectuer les opérations de nettoyage nécessaires avant que le garbage collector ne récupère automatiquement la mémoire de l'objet.Références faibles
Décrit les fonctionnalités qui autorisent le garbage collector à rassembler un objet tout en permettant à l'application d'accéder à ce dernier.Collections forcées
Décrit comment récupérer des objets immédiatement ou au moment le plus opportun.Modes de latence
Décrit les modes qui déterminent l'intrusion de garbage collection.Optimisation de l'hébergement Web partagé
Décrit comment optimiser le garbage collection sur des serveurs partagés en hébergeant plusieurs petits sites Web.Notifications de garbage collection
Décrit comment déterminer à quel moment un garbage collection est effectué et à quel moment il est fini.Nettoyage de ressources non managées
Décrit le modèle de design recommandé pour le nettoyage de ressources non managées.
Référence
System.GC
Fournit les méthodes permettant d'interagir avec le garbage collector système.Object.Finalize
Permet à un objet d'essayer de libérer des ressources et d'effectuer d'autres opérations de nettoyage avant que le garbage collector ne récupère l'objet.System.IDisposable
Propose des fonctionnalités pour une classe de ressource.
Rubriques connexes
- Garbage Collection, exemple de technologie
Présente les fonctionnalités du garbage collector du .NET Framework.