Sobes.tech
Junior — Middle

Explique le mécanisme de collecte automatique des déchets dans le langage Go et comment il gère la mémoire.

sobes.tech IA

Réponse de l'IA

Le langage Go utilise un ramasse-miettes automatique (Garbage Collector, GC), qui gère la mémoire en libérant les objets inutilisés.

Le mécanisme repose sur un algorithme de traçage et de comptage de la reachabilité des objets :

  • Go lance la collecte de déchets en parallèle avec l'exécution du programme (GC concurrent).
  • Le GC détermine quels objets dans le tas ne sont plus accessibles depuis les références racines (par exemple, variables globales, piles de goroutines).
  • Les objets inaccessibles sont considérés comme des déchets et sont libérés.

Caractéristiques :

  • Go utilise une collecte en trois générations : mark (marquage des objets accessibles), sweep (libération des objets inaccessibles).
  • La collecte de déchets minimise les pauses pour ne pas bloquer l'exécution du programme.
  • La gestion de la mémoire est automatique, le programmeur n'a pas besoin de libérer explicitement la mémoire.

Exemple :

func main() {
    s := make([]int, 1000000) // allocation de mémoire
    // utilisation de s
    s = nil // la tranche n'est plus accessible
    // GC libérera la mémoire lors de la prochaine exécution
}

Ainsi, Go simplifie la gestion de la mémoire, réduisant la probabilité de fuites et d'erreurs.