On Friday 28 November 2003 10:33 pm, Gabriel Genellina wrote:
At 27/11/2003 21:17, you wrote:
ob = Topic(...) ob.ViewAlias = self.View self._setObject(id, ob) ob = self._getOb(id)
Is this correct? Or there is a memory leak here? In a previous post http://mail.zope.org/pipermail/zope/2002-January/107054.html Max M maxm@mxm.dk said:
If your item is subclassing persistent you should expect them to stay in the zodb. And then you should not add them to a list in your own product, but create a subclass of ObjectManager and use the _setObject() method to add the item instances.
Else your item class should not subclass persistent.
If you want to do it your way by adding item instances to a list in your product you should also be aware that every time your product is changed, or even one of the item instances, the whole object is written to the Data.fs again. Leading to a bloated Data.fs ... if you don't pack it regularly.
But doing something like that with that many objects is the wrong way to use the zodb.
From this and other sources I've been told *not* to store a Persistent object as an attribute of another object, as this would cause a memory leak. But maybe a PersistentMapping is specially crafted? I dont see anything special in its source.
Hmm. Well, this is a little different -- storing an attribute is not the same as including the object in a list: Persistent object --(attribute)--> Persistent Object vs Persistent object --(attribute)--> Mutable List --(item)--> Persistent Object and Mutable + Non-Persistent objects are NOT supposed to be used in Persistent Objects (but you can use the _p_changed flag to do it?). The proposed solution (an Object Manager): Persistent object --(attribute)--> Persistent ObjectMgr --(attribute)--> Persistent Object suggests that the 1st case is okay. (But doesn't prove it). It's possible that I should be using "_setObject" instead of "=" to create the ViewAlias attribute. (?) Seeing as I don't really understand what the difference is.
Perhaps the enlightened people could explain the rules to avoid memory leaks...
Perhaps. I hadn't heard of this problem. I'll look out for the memory leak in case it is an issue in my case. Thanks, Terry -- Terry Hancock ( hancock at anansispaceworks.com ) Anansi Spaceworks http://www.anansispaceworks.com