memory leaking?!

rasumner at my-deja.com rasumner at my-deja.com
Sun Jul 18 09:34:49 EDT 1999


In article <slrn7op5jj.cva.rasumner at math5-pc.wisdom.weizmann.ac.il>,
  rasumner at math5-pc.wisdom.weizmann.ac.il (Reuben Sumner) wrote:
> I have some code creating a somewhat complicated data structure.
> When I am using Python 1.5.2 compiled with Py_REF_DEBUG I can see
> that reference counts are dissapearing (although I can't figure out
> what is getting lost, all the objects that I can think of I have
> confirmed are being released).  When I compile with Py_TRACE_REFS
> then all of a sudden the reference counts don't increase between
> subsequent calls.  What on earth is going on here?  Running "top"
> and generating a lot of very large structures then memory does seem
> to leak no matter which way I compile python (although I think it is
> slower with Py_TRACE_REFS).

Here is a really small test case demonstrating the problem.

import sys

class C:
	def __init__(self): pass

print sys.getrefcount()
for i in range(100): c=C()
print sys.getrefcount()
for i in range(100): c=C()
print sys.getrefcount()
for i in range(100): c=C()
print sys.getrefcount()

Realy simple.  When I run this in an interpreter compiled
with Py_REF_DEBUG but _not_ Py_TRACE_REFS there is a leakage
of exactly 100 references between the 2nd and 3rd getrefcounts().
This use of sys.getrefcount() requires a small patch I posted
a while ago.  Alternatively run this interactively and look
a the printed values for the total number of references.  My
Python is 1.5.2 on Linux (RedHat 6.0).

Can other people reproduce this?  Can anybody _not_ reproduce
this?  I get the same effect on IRIX6.

Reuben



Sent via Deja.com http://www.deja.com/
Share what you know. Learn what you don't.




More information about the Python-list mailing list