Mike Looijmans
nlv11281 at natlab.research.philips.com
Fri Sep 28 07:00:03 EDT 2007
If Python does not release memory immediately, it usually means there's a cyclic reference. Try to break the cycle by removing as much references as possible. e.g. a = A() b = B() a.b = b b.a = b Causes a "cycle". The garbage collector will pick these up at some other time. To release earlier, assign None or delete the reference like: a.b = None or even: del a.b It usually helps to monitor big objects by putting a "print" statement in their __init__ and __del__ method. Mike Looijmans Philips Natlab / Topic Automation Webb Sprague wrote: > Could anyone recommend a method for profiling memory usage in a > mod_python application? > > My application creates lots and lots of scipy matrices, and then > pickles them, and then stores them in a database. If I do too many > runs I get a memory error when I try to insert them, but I also get > lots of swapping before that. I could delete some of these arrays, > but I would like to figure out where the biggest problems are (because > I would prefer to store everything). > > I would be happy to analyze a core dump too.
|