
Jack Jansen wrote:
The one thing I'm not thrilled by in mxProxy is that a call to CheckWeakReferences() is needed before an object is cleaned up. I guess this boils down to the same problem I had with my weak reference scheme: you somehow want the Python core to tell the proxy stuff that the object can be cleaned up (although the details are different: in my scheme this would be triggered by refcount==0 and in mxProxy by refcount==1). And because objects are created and destroyed in Python at a tremendous rate you don't want to do this call for every object, only if you have a hint that the object has a weak reference (or a proxy).
Well, the check is done prior to every action using a proxy to the object and also when a proxy to it is deallocated. The addition checkweakrefs() API is only included to enable additional explicit checking of the whole weak refs dictionary, e.g. every 10 seconds or so (just like you would with a mark&sweep GC). But yes, GC of the phantom object is delayed a bit depending on how you set up the proxies. Still, I think most usages won't have this problem, since the proxies themselves are usually temporary objects. It may sometimes even make sense to have the phantom object around as long as possible, e.g. to implement the soft references Tim quoted from the Java paper. -- Marc-Andre Lemburg ______________________________________________________________________ Y2000: 135 days left Business: http://www.lemburg.com/ Python Pages: http://www.lemburg.com/python/