[Python-es] liberacion de memoria

Chema Cortes pych3m4 en gmail.com
Dom Oct 31 03:11:56 CET 2010


El 28 de octubre de 2010 20:28, Ramiro <rmrsndvl en yahoo.com.ar> escribió:>
> Buenas
>
>


> Estoy con un programa hecho en GTK que va presentando listas de datos (clientes, facturas, movimientos bancarios, etc) a pedido del usuario. Estas listas son gtk.TreeViews y van encajadas en un gtk.Notebook.
>
> Cuando el usuario ya no quiere alguna lista la cierra (lo que hago es hacer un notebook.remove_page(ventana_hija)).
>
> La cosa es que veo que abriendo varias listas para que consuma memoria y luego cerrando todo (solo quedando la ventana principal y el control de pestañas, el gtk.notebook), la memoria nunca baja.

Con el remove_page tan sólo estás lanzando un evento sobre que vas a
liberar ésa pestaña. Realmente, ¿estás liberando la pestaña?¿mantienes
alguna referencia a 'ventana_hija' en algún sitio? Sin ver más código
es imposible saber más.

> ¿Ustedes qué usan para verificar la memoria, la existencia de objetos o cosas así?

Para problemas de memoria lo más usado, en general, es el "valgrind";
pero te recomiendo empezar con el módulo 'gc' (garbage collection). Si
gc detecta que un objeto persiste más allá de lo que se esperaría de
él, entonces es que tienes un problema con él.


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