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.