Colector de basura de python

Solo disponible en BuenasTareas
  • Páginas : 4 (845 palabras )
  • Descarga(s) : 0
  • Publicado : 30 de octubre de 2011
Leer documento completo
Vista previa del texto
El Colector de Basura de:

Aira Díaz, Francisco Javier Carrera Groba, Jairo LP (Lenguajes de Programación) ESEI (Escuela Superior de Ingeniería Informática

Notas sobre el Colector de Basura yel Destructor de Objetos en Python:
Un recolector de basura (del inglés garbage collector) es un mecanismo implícito de gestión de memoria implementado en algunos lenguajes de programación de tipointerpretado o semi-interpretado. En este caso se tratarán aspectos específicos del lenguaje Python. Rara vez se utilizan los destructores de objetos en Python, puede que sea porque la dinámica de Pythonno necesita el uso de destructores. Sin embargo si es relevante saber que sucede con los objetos cuando el programa se cierra, por lo que se define un destructor en el objeto principal utilizando elmétodo reservado __del__ . Llama la atención que este método nunca sea ejecutado, no solo no se ejecuta automáticamente al finalizar el programa si no que tampoco lo hace cuando se ejecutamanualmente. A continuación un fragmento de código para ejemplificar este hecho:
class Foo: def __init__(self, x): print "Foo: Hola" self.x = x def __del__(self): print "Foo: adios" class Bar: def__init__(self): print "Bar: Hola" self.foo = Foo(self) # x = this instance def __del__(self): print "Bar: Adios" bar = Bar() # del bar # This doesn't work either.

La clase Foo mantiene una referencia a su clasecreadora de la que es una instancia. La salida de este fragmento de código seria:
Bar: Hi Foo: Hi

Como se puede ver los destructores no se llaman, ni si quiera aunque incuyésemos un del al finaldel programa. Si quitamos el self.x se soluciona aparentemente el problema.

El colector de basura:

La razón por la que el __del__ nunca es invocado, se ve claramente si se observa el códigoanterior. Existe un cierto problema con algunos colectores de basura, llamado: referencia circular. Python utiliza un algoritmo de recuento de referencias de recolección de basura. En este tipo de...
tracking img