Is there any way to manually remove an object which the garbage collection refuses to get rid of even when I call gc.collect()
? Working in Python 3.0
Per the docs, gc.get_referrers(thatobject)
will tell you why the object is still alive (do it right after a gc.collect()
to make sure the undesired "liveness" is gonna be persistent). After that, it's somehow of a black art;-). You'll often find that some of the referrers are lists (so WHY is that list referring to thatobject
? you can .remove
it in an emergency mode, but making the normal code sound is better...), and, even more often, dict
s (many of whose may be __dict__
s of some class instance or other -- often not trivial to find out which one... again, brute-force removal is sometimes an expedient emergency solution, but never a sustainable long-range one!-).