Dowser is a CherryPy application that displays sparklines of Python object counts, and allows you to trace their referents. This helps you track memory usage and leaks in any Python program, but especially CherryPy sites.
- PIL (for the sparkline images)
- svn co http://svn.aminus.net/misc/dowser dowser
- python dowser\__init__.py, then browse to http://localhost:8080/
Mount dowser alongside your app via cherrypy.tree.mount(dowser.Root(), '/dowser'). Pick a different script name if you like. Then browse to it and you'll see the index page, with sparklines for all objects the 'gc' module can find. Hit 'refresh' every 5 seconds (dowser.Root.period) and each sparkline will add another pixel.
You can view only objects above a given number of instances by supplying the 'floor' argument to this page; for example, to see only objects which have more than 10 instances, visit http://localhost:8080/?floor=10
Click on any TRACE link to see a list of all instances of the given class. Be careful with large lists--there's no paging feature yet.
Click on one of the object id()'s to get more information about that object:
Click the 'Show the entire tree' to see all the object's parents, grandparents, etc. Again, this tree can be quite large (but at least circular references are nipped in the bud):
- dowserindex.gif (22.6 kB) -
Dowser index page with sparklines, added by fumanchu on 05/23/08 05:02:48.
- dowserlist.gif (17.5 kB) -
Dowser list of objects page, added by fumanchu on 05/23/08 05:03:10.
- dowserobject.gif (34.7 kB) -
Dowser page for a single object, added by fumanchu on 05/23/08 05:03:26.
- dowsertree.gif (34.0 kB) -
Dowser page for a tree of objects, added by fumanchu on 05/23/08 05:03:42.