Développement

Comprendre le rôle du Garbage Collector dans la gestion de la mémoire

Gestion inefficace de la mémoire et des ressources


La gestion efficiente de la mémoire et des ressources constitue un défi crucial dans le domaine du développement logiciel. Lorsqu’elle est négligée, cette problématique peut engendrer des conséquences défavorables, notamment des fuites de mémoire, des performances réduites et même des plantages d’applications.

Les fuites de mémoire se produisent lorsque les objets alloués en mémoire ne sont pas libérés correctement, ce qui entraîne une utilisation excessive et l’épuisement des ressources disponibles. Cette problématique peut découler de références non supprimées, d’objets conservés inutilement en mémoire ou de boucles de références. En conséquence, cela entraîne des ralentissements et des temps de réponse prolongés au niveau de l’application, rendant ainsi l’application inefficace.

La plupart des langages de programmation modernes, tels que Java et C#, intègrent des mécanismes de Garbage Collection pour gérer automatiquement la libération de la mémoire. Comprendre comment fonctionne le Garbage collection peut aider à éviter les fuites de mémoire.

Garbage Collector GC

Le Garbage Collector (GC) de .NET, par exemple, est responsable de la gestion automatisée de la mémoire en gérant l’allocation et la libération de mémoire au sein d’une application. À chaque création d’objet, le CLR (Common Language Runtime) alloue de la mémoire pour cet objet à partir du tas managé. Tant qu’il reste de l’espace d’adressage disponible, le CLR continue d’allouer de l’espace pour de nouveaux objets. Cependant, la mémoire n’est pas infinie, ce qui amène le GC à parcourir le tas managé à la recherche d’objets qui ne sont plus utilisés par l’application, puis il effectue les opérations nécessaires pour récupérer la mémoire occupée par ces objets. De plus, le GC détermine le meilleur moment pour lancer cette opération de garbage collection.

Le Garbage Collector (GC) de C# est conçu pour fonctionner de manière transparente en arrière-plan et gérer la mémoire de manière efficace. Il offre les avantages suivants :

  • Il permet aux développeurs de ne pas avoir à gérer manuellement la mémoire en production.
  • Il alloue efficacement les objets sur le tas managé.
  • Il libère les objets qui ne sont plus utilisés, libère leur mémoire et rend ainsi de l’espace disponible pour les allocations futures.
  • Il garantit la sécurité de la mémoire en empêchant qu’un objet puisse utiliser la mémoire allouée à un autre objet.
ipgarde-developpement-garbage-collector-gc-1080x1080-1

 

Fonctionnement du Garbage Collector :

  1. Détection des objets inaccessibles : Le Garbage Collector identifie les objets qui ne sont plus accessibles depuis le reste du programme. Cela inclut les objets qui ne sont plus référencés par d’autres objets.
  2. Marquage : Le Garbage Collector marque les objets accessibles en tant qu’objets en cours d’utilisation.
  3. Nettoyage : Les objets non marqués sont considérés comme inaccessibles et prêts à être libérés. Le Garbage Collector libère l’espace mémoire occupé par ces objets.

 

Appeler Le GC manuellement ou automatiquement ?

Il est préférable de laisser le Garbage Collector GC fonctionner automatiquement, car il détermine lui-même quand et comment collecter les objets inutilisés pour libérer la mémoire sans l’intervention directe de la part du développeur. Ainsi, il est recommandé d’éviter d’appeler manuellement le Garbage Collector à moins d’avoir une raison valable et de bien comprendre les éventuelles conséquences sur les performances de l’application.

On peut configurer le GC en ajoutant des éléments <gcServer> et <gcConcurrent> au fichier web.config ou app.config.

Voici un exemple de configuration dans le fichier web.config :

 

 

 

Contact-blog

 

Sur le même sujet 

Ne manquez aucune actualité en vous abonnant à la newsletter IPgarde                                                                      

Vous recevrez mensuellement un récap de nos infos pour parfaire votre veille informatique et télécom'  ➡️

3 clics et c'est parti pour la veille !