***
*** NOTE: This is now an old version.
*** See http://pysizer.8325.org for the latest version.
***

What is PySizer?
----------------
PySizer is a memory usage profiler for Python code - you can use it to find
why a Python program is eating memory. It's intended to improve on the
current situation of having to call gc.get_objects() and search through the
resulting huge list of objects.

It was written as part of Google's Summer of Code.

Features
--------
* You can make a snapshot of all reachable objects at a given time,
  organised as a tree (well, a graph, since there are cycles).

* For any given object, you can find out how much space it takes up, what
  objects it references and so on.

  With a patched version of Python, you can also find out what stack of
  function calls created an object, and what objects were created by each
  stack of calls.

* You can collect objects into groups. For example, you can group each
  object according to the module it appears to come from. Then you can treat
  each module as a single object.

* You can filter objects, find the amount of space used by instances of each
  type, find objects which appeared from one snapshot to the next, and so on.

Building
--------
See INSTALL.

Documentation
-------------
See doc/tutorial.html to get started, which also has a link to
automatically-generated documentation. The documentation isn't so good at
the moment, but it should be useful.

See doc/internals.ps for a description of how the scanner works internally,
if you feel like it :-)

Bugs, suggestions, problems, anything else
------------------------------------------
You can contact me at nick.smallbone@gmail.com. I would love to know if you
find a use for it, too.
