btw...how can I change OrderedCollection>>grow without shooting my foots?
On Wed, Aug 3, 2011 at 12:51 PM, Mariano Martinez Peck < [email protected]> wrote: > > > On Wed, Aug 3, 2011 at 12:42 PM, Nicolas Cellier < > [email protected]> wrote: > >> I'm pretty sure the array inst var of your WeakOrderedColleciton is no >> more a WeakArray but a simple Array. >> > > Yes, indeed, it is a normal Array and that cought my attention. But since I > have no idea about Weak stuff...I also noticed that WeakOrderedCollection is > declared as: > > OrderedCollection subclass: #WeakOrderedCollection > instanceVariableNames: '' > classVariableNames: '' > poolDictionaries: '' > category: 'Collections-Weak' > > instead of using the #*weak*Subclass: ... message: > > OrderedCollection *weak*Subclass: #WeakOrderedCollection > instanceVariableNames: '' > classVariableNames: '' > poolDictionaries: '' > category: 'Collections-Weak' > > > >> This is because Pharo's WeakOrderedCollection is broken... >> >> > Do you know a weak collection that is not broken in Pharo and let me do a > addLast: ? > > >> Every reference to Array from within OrderedCollection should be >> replaced with message send (self arrayType). >> See for example, OrderedCollection>>#grow >> >> > Thanks. I will check how many there are and try to fix them. > > >> Nicolas >> >> 2011/8/3 Mariano Martinez Peck <[email protected]>: >> > Hi guys. I am since yesterday trying to find something and I cannot. So >> at >> > this point I need external eyes :) >> > I have this little code: >> > >> > anObject := ClassWith2Var new. >> > sharedObject := ClassWith1Var new. >> > sharedObject var1: 'nose'. >> > anObject var1: Date today. >> > anObject var2: sharedObject. >> > >> > serializedObjects := FuelMareaSerializer new >> serializeAndWriteObject: >> > anObject to: 'aFileName'. >> > anObject := nil. >> > sharedObject := nil. >> > >> > 3 timesRepeat: [Smalltalk garbageCollect]. >> > serializedObjects inspect. >> > >> > >> > >> > What is important here is that FuelMareaSerializer new >> > serializeAndWriteObject: anObject to: 'aFileName' answers a >> > WeakOrderedCollection with each object of the serialized graph (taking >> > anObject as the root) >> > Now, if I print the tempVar serializedObjects I see: >> > >> > a WeakOrderedCollection(ClassWith1Var ClassWith2Var Date DateAndTime >> > Duration a ClassWith1Var a ClassWith2Var 3 August 2011 >> > 2011-08-03T00:00:00+02:00 0:02:00:00 1:00:00:00 86400 2455777 'nose' 0 >> 7200) >> > >> > WHYYYY?? why are all there if I put a nil to both, anObject and >> > sharedObejct. This WeakOrderedCollection should be with all nils (except >> > classes). Why are not being garbage collected? >> > >> > If I explore, for example the tempVar sharedObejct, which is at >> > serializedObjects at: 6 and then I put explore pointers I ONLY see the >> > array of the WeakOrderedCollection pointing to it. I don't understand. >> > >> > Any help is really appreaciated. >> > >> > -- >> > Mariano >> > http://marianopeck.wordpress.com >> > >> > >> >> > > > -- > Mariano > http://marianopeck.wordpress.com > > -- Mariano http://marianopeck.wordpress.com
