[Python-Dev] update on memory leaks in 2.2 (original) (raw)

Tim Peters tim.one@home.com
Fri, 7 Dec 2001 12:35:21 -0500


[Fred L. Drake, Jr.]

Free'd weakref objects are stored in a free list, so it makes sense that these are labelled potential leaks. We could either give up using a free list for these, or we could allocate blocks of these rather than allocating them individually. The latter would allow still better performance and would reduce the malloc overhead.

-0. When we turn on pymalloc in 2.3, blocks will get allocated by magic, and more space-efficiently than you're going to do by hand (it bites one malloc overhead per 256KB). pymalloc will likely be a little slower than a wholly customized free list, but it will get all the memory benefit, and unlike type-specific free lists allows memory to be recycled across types as programs progress.

That change would be a higher risk than tossing the free list, and tossing it would be a higher risk than keeping it this close to the release. But we're probably far enough away that any of the options (no free list, blocking allocation, and leaving it alone) are manageable.

There's another possibility: as float objects do, add a module xxx_fini() routine to clear the free list at shutdown.