Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > Why does this leak memory?

Reply
Thread Tools

Why does this leak memory?

 
 
Steve
Guest
Posts: n/a
 
      06-07-2012
When I run this program:

import configparser, sys, gc
def test():
config=configparser.ConfigParser()
#del(config)
#gc.collect()
test()
sys.stderr.write(sys.version)
gc.set_debug(gc.DEBUG_LEAK|gc.DEBUG_STATS)

It reports:

3.2.3 (default, Apr 11 2012, 07:15:24) [MSC v.1500 32 bit (Intel)]gc:
collecting generation 2...
gc: objects in each generation: 453 258 4553
gc: collectable <ConfigParser 026C0050>
gc: collectable <dict 0264DE40>
gc: collectable <OrderedDict 0200FB78>
gc: collectable <_Link 02713300>
gc: collectable <dict 0264D930>
gc: collectable <weakproxy 026BC180>
gc: collectable <OrderedDict 0200FC10>
gc: collectable <_Link 02713350>
gc: collectable <dict 0264D9C0>
gc: collectable <weakproxy 026BC1B0>
gc: collectable <OrderedDict 0200FCA8>
gc: collectable <_Link 02713378>
gc: collectable <dict 0264DC90>
gc: collectable <weakproxy 026BC210>
gc: collectable <SectionProxy 026C0030>
gc: collectable <dict 0264D5D0>
gc: collectable <_Link 02713328>
gc: collectable <dict 0269D8A0>
gc: collectable <weakproxy 026BC150>
gc: done, 19 unreachable, 0 uncollectable, 0.0000s elapsed.

The leaks can be removed by uncommenting both lines shown.

This strikes me as very odd behaviour. Can anyone explain it, or is it a
bug?

Thanks,

S.




 
Reply With Quote
 
 
 
 
John Gordon
Guest
Posts: n/a
 
      06-07-2012
In <jqqt5s$ejd$(E-Mail Removed)> "Steve" <(E-Mail Removed)> writes:

> gc: objects in each generation: 453 258 4553
> gc: collectable <ConfigParser 026C0050>
> gc: collectable <dict 0264DE40>
> gc: collectable <OrderedDict 0200FB78>
> gc: collectable <_Link 02713300>
> gc: collectable <dict 0264D930>
> gc: collectable <weakproxy 026BC180>
> gc: collectable <OrderedDict 0200FC10>
> gc: collectable <_Link 02713350>
> gc: collectable <dict 0264D9C0>
> gc: collectable <weakproxy 026BC1B0>
> gc: collectable <OrderedDict 0200FCA8>
> gc: collectable <_Link 02713378>
> gc: collectable <dict 0264DC90>
> gc: collectable <weakproxy 026BC210>
> gc: collectable <SectionProxy 026C0030>
> gc: collectable <dict 0264D5D0>
> gc: collectable <_Link 02713328>
> gc: collectable <dict 0269D8A0>
> gc: collectable <weakproxy 026BC150>
> gc: done, 19 unreachable, 0 uncollectable, 0.0000s elapsed.


> The leaks can be removed by uncommenting both lines shown.


> This strikes me as very odd behaviour. Can anyone explain it, or is it a
> bug?


I'm unfamiliar with gc output, but just glancing over it I don't see
anything that looks like a leak. It reported that there were 19 objects
which are unreachable and therefore are candidates for being collected.

What makes you think there is a leak?

--
John Gordon A is for Amy, who fell down the stairs
http://www.velocityreviews.com/forums/(E-Mail Removed) B is for Basil, assaulted by bears
-- Edward Gorey, "The Gashlycrumb Tinies"

 
Reply With Quote
 
 
 
 
Steve
Guest
Posts: n/a
 
      06-08-2012
> "John Gordon" wrote in message news:jqr3v5$src$(E-Mail Removed)...
>
> I'm unfamiliar with gc output, but just glancing over it I don't see
> anything that looks like a leak. It reported that there were 19 objects
> which are unreachable and therefore are candidates for being collected.
>
> What makes you think there is a leak?


Well, I guess I was confused by the terminology. I thought there were leaked
objects _after_ a garbage collection had been run (as it said "collecting
generation 2"). Also, "unreachable" actually appears to mean "unreferenced".
You live n learn...

Cheers.


 
Reply With Quote
 
Ulrich Eckhardt
Guest
Posts: n/a
 
      06-11-2012
Am 08.06.2012 18:02, schrieb Steve:
> Well, I guess I was confused by the terminology. I thought there were
> leaked objects _after_ a garbage collection had been run (as it said
> "collecting generation 2"). Also, "unreachable" actually appears to mean
> "unreferenced". You live n learn...


Actually I understand that differently. If you have circular references
between two objects they are both referenced. If neither is referenced
(directly or indirectly) by the current context, they are unreachable
and can be garbage-collected. Being unreferenced implies that it is
unreachable, but not vice-versa.

Uli
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
FAQ 5.38 Why does Perl let me delete read-only files? Why does "-i" clobber protected files? Isn't this a bug in Perl? PerlFAQ Server Perl Misc 0 02-11-2011 05:00 AM
why does this code leak? ara howard Ruby 33 01-11-2008 10:46 AM
why why why why why Mr. SweatyFinger ASP .Net 4 12-21-2006 01:15 PM
findcontrol("PlaceHolderPrice") why why why why why why why why why why why Mr. SweatyFinger ASP .Net 2 12-02-2006 03:46 PM
Leak or no leak ?? Richard Heathfield C Programming 4 07-10-2006 11:37 AM



Advertisments