Apologies. What a bogus post! I must have been really tripping.... On Tue, Sep 6, 2016 at 9:26 PM, Ben Coman <btc@openinworld.com> wrote:
I thought I was starting to get a grip on how finalization work. I made this example...
Object subclass: #MyObject instanceVariableNames: '' classVariableNames: '' package: 'Play'
MyObject>>autoRelease ^ self class finalizationRegistry add: self
MyObject>>finalize Transcript crShow: 'Finalizing MyObject'
o := MyObject new autoRelease. o := nil. Smalltalk garbageCollect. ==> 'Finalizing MyObject'
So far so good. Extrapolating... I would *expect* this...
oc := OrderedCollection new. 10 timesRepeat: [ oc add: Libclang getClangVersion ]. oc removeAll. oc := nil. Smalltalk garbageCollect.
...to print 'Finalizing MyObject' ten times, but it does nothing!!
Duh! I didn't send autorelease inside the timesRepeat above... Duh^2 !! that example didn't even refer to MyObject!!!!! Of course fixing those two things to get... 10 timesRepeat: [ oc add: MyObject new autoRelease. ]. works perfectly!
Such a simple example feeds my naive presumption that the system seems broken. So could someone help me interpret this result ?
Sorry for the noise. Pure PIBKAM**. Couldn't see the trees for the forest. cheers -ben **problem is between keyboard and mouse.