
Una lista libre (o freelist ) es una estructura de datos utilizada en un esquema de asignación dinámica de memoria . Funciona conectando regiones de memoria no asignadas en una lista enlazada , utilizando la primera palabra de cada región como puntero a la siguiente. Es especialmente adecuada para la asignación desde un grupo de memoria , donde todos los objetos tienen el mismo tamaño.
Las listas de regiones libres simplifican enormemente las operaciones de asignación y desasignación. Para liberar una región, basta con vincularla a la lista de regiones libres. Para asignar una región, simplemente se elimina una región del final de la lista y se utiliza. Si las regiones tienen tamaños variables, puede ser necesario buscar una región de tamaño suficiente, lo cual puede resultar costoso.
Las listas libres tienen la desventaja, heredada de las listas enlazadas, de una baja localidad de referencia y, por lo tanto, una baja utilización de la caché de datos . Además, a diferencia del sistema de asignación de pares , no consolidan automáticamente las regiones adyacentes para satisfacer las solicitudes de asignación de regiones grandes . Sin embargo, siguen siendo útiles en diversas aplicaciones sencillas donde un asignador de memoria completo no es necesario o requiere demasiada sobrecarga.
El entorno de ejecución de OCaml utiliza listas libres para satisfacer las solicitudes de asignación, [ 1 ] al igual que RosAlloc en el entorno de ejecución de Android. [ 2 ]
Véase también
Referencias
- ↑ Minsky, Yaron; Madhavapeddy, Anil (octubre de 2022). "Entendiendo al recolector de basura" . Real World OCaml (2.ª ed.). Cambridge University Press . Consultado el 8 de noviembre de 2022 .
- ↑ "Depuración de la recolección de basura de ART" . source.android.com . Consultado el 16 de febrero de 2023 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
Lecturas adicionales
- Glosario de gestión de memoria
- Diapositivas de la clase sobre asignación de memoria (ppt)
- Gestión de la memoria
- Listas enlazadas
- Elementos básicos del sistema operativo