Junior — Middle
Explica el mecanismo de recolección automática de basura en el lenguaje Go y cómo gestiona la memoria.
sobes.tech AI
Respuesta de la IA
En el lenguaje Go se utiliza un recolector de basura automático (Garbage Collector, GC), que gestiona la memoria liberando objetos no utilizados.
El mecanismo se basa en un algoritmo de trazado y conteo de alcanzabilidad de objetos:
- Go inicia la recolección de basura en paralelo con la ejecución del programa (GC concurrente).
- El GC determina qué objetos en el montón ya no son alcanzables desde las referencias raíz (por ejemplo, variables globales, pilas de goroutines).
- Los objetos inalcanzables se consideran basura y se liberan.
Características:
- Go utiliza una recolección en tres generaciones: mark (marcar objetos alcanzables), sweep (limpiar objetos inalcanzables).
- La recolección de basura minimiza las pausas para no bloquear la ejecución del programa.
- La gestión de memoria es automática, el programador no necesita liberar memoria explícitamente.
Ejemplo:
func main() {
s := make([]int, 1000000) // asignación de memoria
// uso de s
s = nil // ahora la rebanada no es alcanzable
// GC liberará la memoria en la próxima ejecución
}
De esta forma, Go simplifica la gestión de memoria, reduciendo la probabilidad de fugas y errores.