Está en la página 1de 11

MANEJO DE MEMORIA

INTEGRANTES:
CRISTINA BARRENO SIXTO CASTRO REDROBAN. JORDY VASQUEZ

GESTIN DE MEMORIA EN PYTHON


- Mtodo de asignacin y liberacin de memoria en Python es automtica, el usuario no debe asignar o liberar memoria como en C o C++. - Python utiliza dos estrategias para la asignacin de memoria: Reference counting Garbage collection.

REFERENCE COUNTING
- Antes de la versin 2.0, el intrprete de Python solo utilizaba el recuento de referencias para la gestin de la memoria. - El conteo de referencias funciona contando el nmero de veces que un objeto es referenciado por otros objetos en el sistema. - Cuando se eliminan las referencias a un objeto, el recuento de referencias de ese objeto se decrementa. Cuando el recuento de referencias llega a cero se libera el objeto.

REFERENCE COUNTING
- Es un mtodo eficiente pero tiene algunas advertencias, por ejemplo: no puede manejar ciclos de referencia. - Un ciclo de referencia es cuando no hay forma de llegar a un objeto pero su recuento de referencia es todava mayor que cero.
def make_cycle(): l=[] l.append(l)

make_cycle()

GARBAGE COLLECTOR
Automatic Garbage Collector de Ciclos - Los horarios de recoleccin de basura se basan en el lmite de las asignaciones de objetos y cancelaciones de asignacin de objetos.

- Cuando el nmero de asignaciones menos el nmero de cancelaciones de asignacin son mayores que el nmero umbral, se ejecuta el recolector de basura.

import gc print "Garbage collection thresholds: %r" % gc.get_threshold() Garbage collection thresholds: (700, 10, 10)

Como podemos ver el umbral default es 700. Esto quiere decir que cuando el nmero de alojamientos vs el nmero de desalojamientos es mucho ms grande que 700, el garbage collector se ejecutar.

GARBAGE COLLECTOR MANUAL


- Automatic garbage collection no se ejecutar si tu dispositivo Python est fuera de memoria, debido al hecho que el automatic garbage collection ocupa alto peso por encima del nmero de objetos liberados. - Hay dos estrategias recomendadas para realizar la recoleccin de basura Manual: basados en el tiempo y la recoleccin de basura basado en eventos. - Recoleccin de basura en funcin del tiempo es simple: el recolector de basura se le llama en un intervalo de tiempo fijo. - Recoleccin de basura basada en eventos llama al recolector de basura en un evento.

import sys, gc def make_cycle(): l={} l[0] = l def main(): collected = gc.collect() #Retorna el # objetos inaccesibles que han sido coleccionados y desalojados print ("Garbage collector: collected %d objects." % (collected)) print ("Creating cycles...") for i in range(10): make_cycle() collected = gc.collect() print ("Garbage collector: collected %d objects." % (collected)) if __name__ == "__main__": ret = main()

sys.exit(ret)
OUTPUT: Garbage collector: collected 0 objects. Creating cycles... Garbage collector: collected 10 objects.

GESTIN DE MEMORIA INTERNA


- Python utiliza una serie de listas de objetos pequeos. Cada lista contendr objetos de tamao similar. Si un artculo (de un tamao x ) es liberado por falta de referencia, su ubicacin no se devuelve al grupo de memoria global de Python (y an menos al sistema), sino que simplemente se marca como libre y se aade a la lista libre de artculos de tamao x . La ubicacin del objeto muerto ser reutilizado si se necesita otro objeto de tamao compatible. Si no hay objetos muertos disponibles, se crean otros nuevos.

FUENTES:
http://deeplearning.net/software/theano/tutorial/pythonmemory-management.html http://www.digi.com/wiki/developer/index.php/Python_Gar bage_Collection http://blog.oscaruriel.com/python-recoleccion-de-basuragarbage-collection/ http://pyspanishdoc.sourceforge.net/lib/module-gc.html http://www.evanjones.ca/memoryallocator/

También podría gustarte