![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaTiEVZieoD_dtoY-J8-4U3DtdPSfL6Oky4EhFaOfopAOSJUZOfPliw1XyA0mx5CPaxRjOooD_4MFrTPXke4ntmHrXFsjmxjJz1eKunmj4UBXmJOtMGnOJaEFR4-pa_JO4dHptiKoZA5M/s400/Purranque+cuenta+con+nuevo+camion+recolector+de+basura.jpg)
Su improtancia radica en que Cualquier programa informá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é espacios está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 mecanismo explí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 de programación donde no se maneja el concepto de memoria. Por ejemplo en lenguajes declarativos como Lisp o Prolog.
Recolección de basura: El espacio de memoria se va llenando con diferentes "objetos" (representados con colores), también pueden destruirse algunos de ellos, dejando "huecos" en el espacio de memoria. Cuando ya no queda espacio disponible, o cuando lo decide la rutina de recolección de basura, la memoria es "compactada", colocando todos los "objetos" que se están usando al principio, y consolidando todos los "huecos" de memoria al final, quedando así un gran área de memoria disponible para la futura creación de objetos.
Algunos lenguajes que Usan garbage collector:
Como anotacion final. la mayoria de lenguajes nuevos tienen recolector de basura (garbage collector) propio, el cual va liberando automáticamente la memoria inutilizada para evitar hacer un gasto innecesario de memoria, pero los algoritmos de estos “recogedores de basura” son complicados y no son ni mucho menos perfectos, así que si le ayudamos un poco y además así maximizaremos la memoria disponible en el momento deseado.
Para liberar estos recursos podemos hacer uso de por ejemplo en PHP la variable unset($variable) para así liberar la memoria.
por ultimo dejo este video del instructor Jonathan Shewchuk de la universidad de Berkeley acerca de garbage collections en java, que espero el ingeniero guillen no lo mire para que no tome ideas de evaluacion de él jeje. este video lo encontre muy entretenido e informativo en este tema.
Bibliografia:
http://java.sun.com/docs/hotspot/gc1.4.2/
http://www.cristalab.com/tips/clase-para-manejar-el-garbage-collector-de-flash-player-c68118l/
http://www.youtube.com/watch?v=rp8PvFvSO_c
http://en.wikipedia.org/wiki/Garbage_collection_%28computer_science%29
Muy buen post! completo y nítido! Sobre el video me gustó y ya tengo en mente algunas ideas! jajajaja
ResponderEliminarNooooo que mal! sabia que no tenia que ponerlo!!!! jaja en especial por lo de rateyourstudents.blogspot.com
ResponderEliminar