When executing the code below, I expected both values to be garbage collected, yet 's2' apparently isn't. Other attempts were using 'Smalltalk garbageCollect' and adding 's2' from another method (to make sure the block context wasn't preventing garbage collection). Any ideas?
| weakDict | weakDict := WeakValueDictionary new. weakDict at: 1 put: Object new. weakDict at: 2 put: 's2'. Smalltalk garbageCollectMost. (weakDict at: 1) = nil ifFalse: ['at 1 not nil' inspect]. (weakDict at: 2) = nil ifFalse: ['at 2 not nil' inspect]. "=> shows an inspector"
Thanks, Brian.