Gestión de memoria

Alezeia Gonzalez Alezeia.Gonzalez en iit.upcomillas.es
Mar Mar 17 17:24:06 CET 2009


Hola a todos.



Tengo un problema con la gestión de memoria de una aplicación que maneja una
cantidad importante de datos y que al ejecutarla consume la memoria virtual.



El problema ocurre en un procedimiento que contiene un bucle que se ejecuta
muchas veces. Cada vez que entra en este bucle, se define un nuevo objeto,
llamémosle “a”, de la clase “claseA”. El objeto “a” tiene un atributo
“a.listaA” que es una lista que contiene objetos de la clase “claseB”. Según
se construyen los objetos de la “claseB”, se almacenan en la lista
“a.listaA”. La asignación a esta lista se hace por variable, por lo que, si
yo quiero modificar un objeto ”b” de la “claseB” contenido en “a.listaA”,
puedo acceder a él a través de “a.listaA”. Hasta aquí, todo bien



El problema surge cuando se termina una iteración del bucle y voy a por la
siguiente. Antes de volver a empezar, tengo que borrar todo lo que se ha
construido dentro del bucle y sólo lo que se ha construido dentro del bucle.
Entonces, utilizo el procedimiento “del” para eliminar el objeto “a”. De
este modo, elimino “a” y “a.listaA”, pero no todos los objetos de la
“claseB” que contiene “a.listaA”. Entonces, decido sobrecargar el
procedimiento “del” y le digo que, cuando le pida que elimine “a”, además me
borre cada elemento que contenga “a.listaA”. Y aquí está el problema. Me
borra las referencias, pero no los objetos. Y no encuentro otra manera de
acceder a los objetos que contiene “a.listaA”.



¿Alguien sabe cómo podría hacerlo para acceder a los objetos de la lista y
borrarlos? Tened en cuenta que sólo quiero borrar lo que se haya construido
dentro del bucle porque el resto de variables las necesito, así que no me
vale algo que me borre todo.



Gracias.

Un saludo.



--
La presente comunicación tiene carácter confidencial y es para el exclusivo uso del destinatario indicado en la misma. Si Ud. no es el destinatario indicado, le informamos que cualquier forma de distribución, reproducción o uso de esta comunicación y/o de la información contenida en la misma están estrictamente prohibidos por la ley. Si Ud. ha recibido esta comunicación por error, por favor, notifíquelo inmediatamente al remitente contestando a este mensaje y proceda a continuación a destruirlo. Gracias por su colaboración.

This communication contains confidential information. It is for the exclusive use of the intended addressee. If you are not the intended addressee, please note that any form of distribution, copying or use of this communication or the information in it is strictly prohibited by law. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this message. Thank you for your cooperation.
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





Más información sobre la lista de distribución Python-es