[sugar] Pygtk and garbage collecting

Philip Van Hoof spam
Mon Jul 31 11:33:03 EDT 2006

This PyGTK bug is going to be important for OLPC as it might slow down
object destruction.


For example in the tinymail-python-test.py*, you will find a
gc.collect(). This is to speed up the destruction of objects in the
situation described in Bug #320428


In case of tinymail the GtkTreeModel that holds a reference on all the
headers of the current folder, is such an object. 

model = MsgHeaderListModel ()
treeview.set_model (model)

newmodel = MsgHeaderListModel ()
treeview.set_model (newmodel)

Will not immediately mark "model" for garbage collection (when model
goes out of scope). Adding a gc.collect(), however, will. 

That model instance, in case of tinymail, holds a reference to the
headers of your folder. This is where most of the memory tinymail
consumes is located (the summary information). Therefore it's a small
disaster on a device with few memory resources, that Pythons garbage
collector is slow at detecting this.

Applying the patch of Bug #320428 or performing gc.collect() in your
Python code fixes this.

Note that tinymail isn't going to be the only case.

Philip Van Hoof, software developer at x-tend 
home: me at pvanhoof dot be 
gnome: pvanhoof at gnome dot org 
work: vanhoof at x-tend dot be 
http://www.pvanhoof.be - http://www.x-tend.be

More information about the Sugar-devel mailing list