Collecte des ordures

Définition - Que signifie Garbage Collection?

Le garbage collection, dans le contexte de .NET, est le processus par lequel le Common Language Runtime (CLR) de .NET Framework gère la mémoire en allouant et en libérant de la mémoire automatiquement.

Le garbage collector de .NET tente de compacter la mémoire de manière à augmenter l'espace de travail requis pour le tas. La classe GC de la bibliothèque de classes .NET contrôle le garbage collector. La tâche principale consistant à effectuer une collecte est exécutée par le moteur d'optimisation du GC qui détermine le meilleur moment pour effectuer la collecte en fonction des allocations effectuées. Les exécutions GC ne sont pas déterministes car l'appel à GC ne peut pas être garanti. Cependant, des appels explicites à la méthode surchargée 'Collect ()' de la classe GC peuvent être utilisés chaque fois que nécessaire.

Les avantages offerts par GC comprennent:

  • l'élimination du code de désallocation de mémoire dans les applications
  • utilisation de la mémoire optimisée dans le tas géré
  • effacement de la mémoire des objets récupérés qui ne sont plus utilisés (ce qui aide à initialiser les objets gérés alloués à l'avenir et à assurer la sécurité de la mémoire des objets pour éviter qu'un objet utilise le contenu d'un autre.)

Definir Tech explique Garbage Collection

GC gère la mémoire virtuelle sur le tas géré, qui est le segment de mémoire utilisé pour stocker et gérer les objets créés dans un processus géré. Si un objet n'a aucune référence et ne peut pas être atteint ou utilisé, il devient une poubelle. Tandis que GC effectue une collection dans un thread séparé, tous les objets inutilisables sont énumérés et la mémoire qui leur est allouée est récupérée.

Le nettoyage de la mémoire est exécuté dans des situations telles que lorsque le système a une mémoire physique faible ou lorsque la mémoire allouée dans le tas géré dépasse la valeur de seuil acceptable. Puisque le GC est exécuté périodiquement, il n'est généralement pas nécessaire d'appeler la méthode GC.Collect ().

Les deux options dans lesquelles GC peut être configuré pour spécifier la manière dont le CLR doit fonctionner sont 1) la station de travail et 2) le garbage collection du serveur. La principale différence entre les deux est que le premier se produit dans le thread utilisateur qui a déclenché le GC, tandis que le second se produit sur les threads exécutés au niveau de priorité le plus élevé. En outre, la station de travail GC est toujours utilisée sur un système à processeur unique tandis que le serveur GC est gourmand en ressources avec des segments de plus grande taille et utilisé dans des systèmes avec plusieurs processeurs.

Les deux types de collections possibles sont des types complets et partiels. Une collection complète est exécutée en arrêtant l'exécution du programme et en visitant chaque objet, en suivant son pointeur d'objet et en marquant l'objet comme accessible (ou actif) ou inaccessible (ou condamné). Après avoir visité les objets, la mémoire des objets inaccessibles est récupérée et les objets vivants sont glissés afin que la mémoire allouée soit contiguë sans aucun espace perdu entre les deux. La collection partielle ne recherche qu'une partie du tas et est utilisée lorsqu'une collection complète s'avère coûteuse.

La limitation de GC est qu'il ne libère pas les objets inutilisés qui sont encore référencés, ce qui peut provoquer des fuites de mémoire.

Cette définition a été écrite dans le contexte de .NET