how do I find memory leaks?
Neel Krishnaswami
neelk at brick.cswv.com
Wed Jul 21 19:26:25 EDT 1999
More information about the Python-list mailing list
Wed Jul 21 19:26:25 EDT 1999
- Previous message (by thread): how do I find memory leaks?
- Next message (by thread): how do I find memory leaks?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
In article <7n4skv$8do at thalamus.wustl.edu>, Heather A. Drury <heather at thalamus.wustl.edu> wrote: > >The program has gotten to a fairly advanced stage but I've run >into what appears to be a major memory leak. I come >from the C programming world and have previously used >Purify to debug memory leaks. Alas, I thought using python/vtk >would take care of all this memory garbage for me (although >I'm probably not doing something I should be). > >Over time as the user continues to use the application, the >computer starts using up swap space and eventually the program >crashes. I haven't the faintest idea how to begin to debug this >problem. I'm sure I need to provide some more detail but the >code is about 2000 lines now and I'm not sure what detail >would be useful. > >Any hints/suggestions/pointers would be greatly appreciated. This sounds like a problem an awful lot like I had with NumPy a few weeks ago. Basically, slices of arrays count as references to it, which leads to some surprising memory wastage if you don't know what's happening. For example: import Numeric def waste_memory(): x = Numeric.zeros([1000,1000]) return x[0,0:2] Each call to waste_memory() will generate a million-element array, and return an array of two elements. However, the slice that's returned will cause the *whole* 1000x1000 array to be kept in memory. You can fix this by wrapping the return in another call to Numeric.array(), which creates a new array object and lets the old one go out of scope properly. E.g.: def no_waste(): x = Numeric.zeros([1000,1000]) return Numeric.array( x[0,0:2] ) Hope this helps. Neel
- Previous message (by thread): how do I find memory leaks?
- Next message (by thread): how do I find memory leaks?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list