Recolección de basura y gestión de memoria
La gestión de memoria rige cómo los programas asignan y recuperan memoria; la recolección de basura automatiza la recuperación identificando y liberando objetos que ya no son accesibles.
Definition
La gestión de memoria es la asignación y recuperación de la memoria de un programa; la recolección de basura es la recuperación automática que libera la memoria ocupada por objetos a los que el programa ya no puede acceder, lo que exime al programador de la desasignación explícita.
Scope
Este tema abarca la gestión automática y manual de la memoria para los tiempos de ejecución del lenguaje: conteo de referencias, marcado y barrido, copia y recolección generacional; rastreo de accesibilidad; y las compensaciones entre el rendimiento, el tiempo de pausa y la sobrecarga de memoria. Aborda los recolectores concurrentes e incrementales y la relación entre la estrategia de recolección y el diseño del lenguaje.
Core questions
- ¿Cómo determina un recolector qué objetos aún son necesarios?
- ¿Cuáles son las compensaciones entre el rendimiento, la latencia y el consumo de memoria?
- ¿Por qué la separación de objetos por edad (recolección generacional) mejora la eficiencia?
- ¿Cómo puede la recolección evitar pausas prolongadas en sistemas interactivos o en tiempo real?
Key theories
- Recolección de basura por rastreo
- McCarthy introdujo la recolección automática de basura para Lisp, estableciendo la idea de recuperar memoria rastreando qué objetos permanecen accesibles desde las raíces del programa.
- Recolección generacional
- Lieberman y Hewitt observaron que la mayoría de los objetos mueren jóvenes y propusieron recolectar las generaciones más jóvenes con mayor frecuencia, reduciendo drásticamente el costo de recolección en la práctica (la hipótesis generacional).
- Taxonomía de las técnicas de recolección
- Wilson y el Manual de Recolección de Basura organizan el espacio de diseño del conteo de referencias, el marcado y barrido, la copia, los recolectores incrementales y concurrentes, y sus compensaciones de rendimiento.
Clinical relevance
La gestión automática de la memoria elimina clases enteras de errores como los punteros colgantes y las fugas de memoria, razón por la cual la mayoría de los lenguajes de alto nivel dependen de la recolección de basura. La elección del recolector afecta fuertemente la latencia y el rendimiento de la aplicación, especialmente para sistemas interactivos y de servidor.
History
McCarthy introdujo la recolección de basura con Lisp en 1960. Le siguieron la recolección por copia (Cheney) y el conteo de referencias, y el recolector generacional de Lieberman y Hewitt de 1983 explotó las vidas útiles de los objetos. Las décadas posteriores produjeron recolectores incrementales, concurrentes y basados en regiones, encuestados exhaustivamente en el trabajo de Wilson de 1992 y el Manual de Recolección de Basura de 2011.
Debates
- Recolección automática versus gestión manual o basada en la propiedad
- Los diseñadores debaten la recolección de basura, que es segura y conveniente pero puede imponer pausas y sobrecarga, frente a la gestión manual o basada en la propiedad, que ofrece un rendimiento predecible y un menor consumo de recursos a costa de la carga y el riesgo del programador.
Key figures
- John McCarthy
- Henry Lieberman
- Carl Hewitt
- Richard Jones
- Paul Wilson
Related topics
Seminal works
- mccarthy1960
- lieberman1983
- wilson1992
- jones2011
Frequently asked questions
- ¿Cómo sabe un recolector de basura qué objetos liberar?
- Un recolector de rastreo comienza desde raíces conocidas, como variables de pila y globales, y sigue las referencias para marcar todos los objetos accesibles; cualquier cosa que no se alcance es inaccesible y puede ser reclamada.
- ¿Por qué es efectiva la recolección de basura generacional?
- Debido a que la mayoría de los objetos se vuelven inaccesibles poco después de la asignación, recolectar la generación joven con frecuencia recupera la mayor parte de la basura de forma económica, mientras que los objetos más antiguos y de larga vida se escanean con mucha menos frecuencia.