[Python-Dev] Py_Finalize does not release all memory, not even closely (original) (raw)

"Martin v. Löwis" martin at v.loewis.de
Sun Apr 16 08:50:25 CEST 2006


Tim Peters wrote:

Because new-style classes create cycles that PyFinalize() doesn't clean up, it may make analysis easier to stick a PyGCCollect() call (or two! repeat until it returns 0) inside the loop now.

I'm shy to do this: the comment in Py_Finalize suggests that things will break if there is a "late" garbage collection.

There is no way at present, short of editing the source for PyFinalize and recompiling. Presumably this is something that should be addressed in the module initialization/finalization PEP, right?

Indeed.

This totals to 360, which is for some reason higher than the numbers I get when counting the objects on the global list of objects. How much higher?

Well, I counted an increase of 156 objects on the "all objects" list, and an increase of 360 according to the COUNT_ALLOCS numbers. The first number was without COUNT_ALLOCS being defined, though.

Anyway, thanks for your comments. I'll try to look at this from time to time, maybe I can resolve some of the leaks.

Regards, Martin



More information about the Python-Dev mailing list