Why so many references to global variables?

J-P me at home.net
Thu Jul 3 19:19:21 EDT 2003


Alexander Schmolck wrote:
> J-P <me at home.net> writes:
> 
> 
>>It appears that every time the interpreter tests for
>>the value of 'myflag', it keeps a reference to it.
> 
> 
> What makes you think so? This seems rather unlikely to me (not that the
> references themselves should eat your memory anyway!). 

Well, sys.getrefcount() does tell me there are 3 millions  references
to it and other globals. Even though this doesn't eat up all my memory
(how large is a reference object in Python?), I definitely think there's 
something fishy with keeping that many references to global variables 
that appear here and there in the script.



> Chances are, the C extension code doesn't work correctly (C extensions to
> python code have to do memory management by hand; increasing and decreasing
> reference counts for the python objects they deal with as appropriate; so if a
> bit of code forgets to decrease the refcount, the object will stay alive
> forever; my guess would be that this it what happens here).

Might be, but the ref count for the objects interacting with the C 
library are pretty much what I expect them to be, i.e. a few dozens.
I don't think there are other memory leaks in the bindings to the
library. I've passed it through Purify a couple of times and everything
seems clean.


J-P





More information about the Python-list mailing list