On 08/05/2017 05:36 PM, Ned Batchelder wrote: > On 8/5/17 5:41 PM, Tim Daneliuk wrote: >> On 08/05/2017 11:16 AM, Ned Batchelder wrote: >>> It uses >>> reference counting, so most objects are reclaimed immediately when their >>> reference count goes to zero, such as at the end of local scopes. >> Given this code: >> >> class SomeObject: >> ..... >> >> >> for foo in somelist: >> >> a = SomeObject(foo) >> b = SomeObject(foo) >> c = SomeObject(foo) >> >> # Do something or other >> ... >> >> # Bottom of 'for' scope >> >> >> Are you saying that each time a,b,c are reassigned to new instances of >> SomeObject the old instance counts go to 0 and are immediately - as in >> synchronously, right now, on the spot - removed from memory? > Yes, that is what I am saying. In CPython, that is. Other > implementation can behave differently. Jython and IronPython use the > garbage collectors from the JVM and .net, I don't know specifically how > they behave. >> My >> understanding was (and I may well be wrong), that the reference count >> does get decremented - in this case to 0 - but the *detection* of that >> fact does not happen until the gc sweep looks through the heap for such >> stale objects. > That is how classic garbage collectors worked. And Python has something > like that, but it's only used to collect circular structures, where the > reference counts will never go to zero, but nevertheless the entire > structure can be unreferenced as a whole. > > --Ned. >
Interesting. I haz a confuzed. Thanks for clearing that up. -- https://mail.python.org/mailman/listinfo/python-list