On Mon, 2003-12-08 at 13:17, Dieter Maurer wrote:
Jeremy Hylton wrote at 2003-12-7 23:01 -0500:
On Sun, 2003-12-07 at 08:15, Dieter Maurer wrote:
ATT: replacing the cache without clearing it can lead to huge memory leaks (everything in the old cache is leaked!).
Without commenting on the rest of the bug report, I should mention that caches and persistent objects all participate in cyclic GC. They will not leak the way pre-2.8 caches did.
Has the "do not free when a cycle contains an object with destructor" restriction been removed from the cyclic GC?
It is not unlikely that the cache references an object with a "__del__". This may keep the cache and all its content.
I don't think it makes a lot of sense to put an __del__ method on a Persistent object. When would you expect it to be called? Every time the object is turned into a ghost? When the object is removed by pack? I can imagine some people would try to migrate non-persistent code to ZODB and have to deal with __del__ then. If I were doing that, I'd make sure to check gc.garbage when I tested and fix any code that caused leaks. Jeremy