Hi all, In my Zope site I have classes derived from the mixin Sync.Synchronized, because the objects derived from my classes must be thread-safe. Lately I've being experiencing serious memory leaks, with the result that after a couple of days Zopes memory usage reaches a couple of hundred megabytes in size, and Zope stops responding.
In an attempt to track down the problem, I have been using the Zope debug section of the management interface, and I noticed that the refcount of Sync.Synchronized increases by about 200 everytime my site receives a get request. These reference counts never decrease. To help me understand the problem, I wrote a small test harness consisting of two files. The first, test1.py, looks like this: import Sync class foo(Sync.Synchronized): def __init__(self): print 'constuctor' def bar(self): print 'wibble' # Create a singleton object. There should only be one of these. foo_ob=foo() ## end of test1.py The second file, test.py, looks like this: import sys,Sync import test1 count=0 while 1: count=count+1 # call method bar on object foo_ob. test1.foo_ob.bar() print '%d - %d' % (count, sys.getrefcount(Sync.Synchronized)) ## end of test.py This code just imports test1, and makes lots of calls to the bar() method of the single foo_ob. The results of running test.py is constuctor wibble 1 - 11 wibble 2 - 12 wibble 3 - 13 wibble 4 - 14 wibble 5 - 15 wibble 6 - 16 wibble 7 - 17 wibble 8 - 18 wibble 9 - 19 wibble 10 - 20 wibble 11 - 21 wibble 12 - 22 wibble 13 - 23 wibble 14 - 24 wibble 15 - 25 wibble 16 - 26 wibble 17 - 27 wibble 18 - 28 wibble 19 - 29 wibble 20 - 30 wibble 21 - 31 wibble 22 - 32 wibble 23 - 33 wibble 24 - 34 wibble 25 - 35 wibble 26 - 36 wibble 27 - 37 wibble 28 - 38 wibble 29 - 39 Note how the refcount for Sync.Synchronized keeps increasing. I searched on Google about this, and found this message: http://cvs.zope.org/Zope/lib/python/ts_regex.py?sortby=log which implies that there was a problem with refcounts. So, finally, we come to the question, or rather questions, since there are two: 1. Why does the refcount of Sync.Synchronized keep increasing? 2. Am I chasing a red herring here? That is, does the "Top Refcounts" part of the Zope Debug screen merely show that there is one instance of an object, and N references, and consequently nothing to worry about?. If so, is there a way I can find out how many real instances there are? Any advice greatly appreciated. Thanks in advance, Noel. _______________________________________________ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )