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!!
Such a simple example feeds my naive presumption that the system seems
broken. So could someone help me interpret this result ?
cheers -ben