Re: [Pharo-dev] finalization
I'm documenting what I'm learning in a format for a blog post that might be the basis for something. cheers -ben On Wed, Sep 7, 2016 at 3:40 AM, stepharowrote: > Ben > > no stress. Now what I would love is an example that we can put in the uFFI > chapter :) > > Stef > > > Le 6/9/16 à 17:32, Ben Coman a écrit : > >> Apologies. What a bogus post! I must have been really tripping >> >> On Tue, Sep 6, 2016 at 9:26 PM, Ben Coman 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. >> >> > >
Re: [Pharo-dev] finalization
Ben no stress. Now what I would love is an example that we can put in the uFFI chapter :) Stef Le 6/9/16 à 17:32, Ben Coman a écrit : Apologies. What a bogus post! I must have been really tripping On Tue, Sep 6, 2016 at 9:26 PM, Ben Comanwrote: 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.
Re: [Pharo-dev] finalization
Apologies. What a bogus post! I must have been really tripping On Tue, Sep 6, 2016 at 9:26 PM, Ben Comanwrote: > 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.