Garbage Collector

Páginas: 12 (2995 palabras) Publicado: 2 de octubre de 2011
1. Recolector de basura. ¿Qué es?

Los recolectores de basura (RB) son subsistemas existentes dentro de un lenguaje o librería externa, asistido por el compilador, el SO o ambos cuyo fin es detectar bloques de memoria en desuso y reciclarlos para su futura utilización.

Fueron inventados por John McCarty alrededor de 1958 para resolver problemas de manejo de memoria asociados a Lisp, lenguajedesarrollado por la misma persona, pionero en varios conceptos trascendentales. Nacieron como alternativa a la gestión de memoria manual, esto es, realizada por el programador. Dicho enfoque es tedioso y muy propenso a errores, tales como fugas de memoria (Memory leaks) y referencias/punteros inválidos o “colgantes” (dangling pointers/references). Estas clases de errores pueden perjudicar elrendimiento de las aplicaciones, provocar errores inesperados o, incluso, corromper datos.

Un beneficio extra de la recolección de basura es que nos permite abstraernos del funcionamiento concreto del manejo de memoria de objetos y variables, con lo cual, nos permite concentrarnos más en el problema real a solucionar.

2. Mitos

▪ RB es necesariamente más lento que la gestión manual dememoria.

▪ RB hará que los programas se pausen.

▪ La gestión manual de memoria no causa pausas en la ejecución.

▪ RB es incompatible en lenguajes que no poseen un mecanismo de recolección de basura integrado. (Como C o C++)

3. Verdades

▪ La mayor parte de los objetos alocados son referenciados por un numero muy bajo de punteros (incluso uno solo)

▪ Lamayoría de los objetos alocados tienen periodos de vida cortos

▪ Los patrones de alocación (distribución del espacio, del tiempo de vida) no son uniformes y son muy cambiantes y volátiles

▪ El funcionamiento de la máquina virtual importa.

▪ El comportamiento de la cache importa.

▪ Las estrategias «óptimas» pueden fallar rotundamente.

4. Contexto

Cualquier programainformático hace uso de una cierta cantidad de memoria de trabajo puesta a su disposición por el sistema operativo. Esta memoria tiene que ser gestionada por el propio programa para:

▪ Reservar espacios de memoria para su uso.
▪ Liberar espacios de memoria previamente reservados.
▪ Compactar espacios de memoria libres y consecutivos entre sí.
▪ Llevar cuenta de qué espaciosestán libres y cuáles no.

Generalmente, el programador dispone de una biblioteca de código que se encarga de estas tareas. No obstante, el propio programador es responsable de utilizar adecuadamente esta biblioteca.

Esto tiene la ventaja de que se hace un uso eficiente de la memoria, es decir, los espacios de memoria quedan libres cuando ya no son necesarios. No obstante, este mecanismoexplícito de gestión de memoria es propenso a errores. Por ejemplo, un programador puede olvidar liberar la memoria de manera que, tarde o temprano, no quede memoria disponible, abortando la ejecución del programa.

Como alternativa es necesaria una gestión implícita de memoria, donde el programador no es consciente de la reserva y liberación de memoria. Esto es obligado en algunos lenguajes deprogramación donde no se maneja el concepto de memoria. Por ejemplo en lenguajes declarativos como Lisp o Prolog.

Para el punto 1 se utilizan técnicas y/o algoritmos de alocación; para el punto 4 se utilizan técnicas y/o algoritmos de reciclado. Los puntos 2 y 3 no pertenecen claramente a ninguno de los dos campos anteriores, en las siguientes secciones se verá que esas cuestiones están diseminadas enambas clases de algoritmos.

5. Técnicas de alocación

Primer ajuste

Para este algoritmo, el asignador de memoria al recibir una solicitud de memoria busca en la lista de bloques libres el primer bloque que es suficientemente grande como para satisfacer la solicitud. En caso de que el bloque elegido sea considerablemente más largo que el requerido, se suele dividir el bloque y el...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Garbage
  • Garbage
  • Garbage
  • Garbage
  • open collector output
  • Tuning Garbage Collection
  • Modelo de garbage
  • Dust collector

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS