[Zope] memory leak in a very simple product. Way?

Chris McDonough chrism@zope.com
Wed, 16 Jan 2002 09:03:08 -0500


I dont think I understand the issue.  You create some persistent objects.
You have references to those objects in a list.  You store the list in a
persistent object too.  You restart and you still have references to those
objects.  This isn't a leak, AFAICT.

----- Original Message -----
From: "Christoph Wierling" <wierling@molgen.mpg.de>
To: <tpassin@mitretek.org>
Cc: <zope@zope.org>
Sent: Wednesday, January 16, 2002 5:19 AM
Subject: Re: [Zope] memory leak in a very simple product. Way?


>
> [Thomas B. Passin]
> >
> > [Christoph Wierling]
> > >
> > > I've writte a very simple product which creates 100 simple objects
> > > (testProd class instances) and each of these objects has a
list-attribute
> > > which contains 200 other objects (item class instances). (Please find
the
> > > code at the end of this mail.)
> > > By starting the addTestProd-function I create 20000 references to
> > > item objects, as the Zope-debug option as well as the
leakFinder-product
> > > tell me.
> > > But I'll never get rid of these references and earlier or later I'll
run
> > > out of memory.
> > >
> > > Could anybody explain me, way this simple product is leaking like a
sieve?
> > > And how I can get rid of the references?
> > >
> > >
> > > here is the code:
> > >
> > > ...
> >
> > > class testProd(SimpleItem.SimpleItem):
> > >     """ testProd docu """
> > >
> > >     meta_type = 'testProd'
> > >
> > >     def __init__(self, id, title = ''):
> > >         self.id = id
> > >         self.title = title
> > >
> > >         self._tree = []
> > >
> > >         for i in xrange(200):
> > >             n = item(str(i),i)
> > >             tree = self._tree
> > >             tree.append(n)
> > >             self._tree = tree
> > >
> >
> > I think you really want to do this:
> >
> >          tree = []
> >          for i in xrange(200):
> >              n = item(str(i),i)
> >              tree.append(n)
> >          self._tree = tree
> >
>
> Thanks for the suggestion. Your code does about the same as my did -
> it also reproduces the 20000 references to objects of the item-class.
> And I also don't get rid of the 20000 references. I tried it!  :-(
>
> christoph
>
>
>
> _______________________________________________
> Zope maillist  -  Zope@zope.org
> http://lists.zope.org/mailman/listinfo/zope
> **   No cross posts or HTML encoding!  **
> (Related lists -
>  http://lists.zope.org/mailman/listinfo/zope-announce
>  http://lists.zope.org/mailman/listinfo/zope-dev )
>