Documento

Solo disponible en BuenasTareas
  • Páginas : 2 (298 palabras )
  • Descarga(s) : 0
  • Publicado : 14 de agosto de 2012
Leer documento completo
Vista previa del texto
EL RECOLECTOR DE BASURA Y LOS DESTRUCTORES

Y aquí va a empezar la polémica entre los programadores de C++: los auténticos gurús de este lenguaje defenderán quequieren seguir gestionando la memoria a su antojo, y los que no estén tan avanzados dirán que C# les acaba de quitar un gran peso de encima.

En efecto, tal y como osimagináis, C# (más propiamente, el código gestionado) incluye un recolector de basura (GC, Garbage Collector), es decir, que ya no es necesario liberar la memoriadinámica cuando no se necesita más una referencia a un objeto. El GC funciona de un modo perezoso, esto es, no libera las referencias en el momento en el que se dejan deutilizar, sino que lo hace siempre que se de uno de estos tres casos: cuando no hay espacio suficiente en el montón para meter un objeto que se pretende instanciar;cuando detecta que la aplicación va a finalizar su ejecución; y cuando se invoca el método Collect de la clase System.GC.

Sí, sí, ya sé que los que estéis empezando aprogramar ahora no os habéis enterado de nada. Veamos, hasta ahora sabéis que cuando se instancia un objeto se reserva un bloque de memoria en el montón y se devuelveuna referencia (o puntero) al comienzo del mismo. Pues bien, cuando este objeto deja de ser utilizado (por ejemplo, estableciéndolo a null) lo que se hace es destruirla referencia al mismo, pero el objeto permanece en el espacio de memoria que estaba ocupando, y ese espacio de memoria no se puede volver a utilizar hasta que no sealiberado. En C++ era tarea del programador liberar estos espacios de memoria, y para ello se utilizaban los destructores. Sin embargo, en C# esto es tarea del GC.
tracking img