On Wed, Apr 1, 2020, 01:30 Tim Mackinnon <tim@testit.works> wrote: > Yeah, I was taught (and it may be out of date), that as become: is a 2 way > operation the identity of nil (as a singleton) would get swizzled, so it > was safer to create a simple new object that could be easily gc’d (that’s > what I vaguely recall anyway). (This was in early VA from the OTI guys, but > maybe that gets handled better in modern VA, as I think become: is two way > in VA right?) >
VA become: is one way. You can use multiBecome: to have a two way become:. I don't have the details to hand. > Tim > > On 1 Apr 2020, at 08:11, jtuc...@objektfabrik.de wrote: > > Tim, > > out of curiosity: why do you suggest to create hundreds of thousands of > Strings instead of become: nil? > > Does Pharo do two-way become: ? > I'be been nilling instances for a little over 2 decades in VAST so far and > never had any troubles with it... > > Other than that: the become: nil (or String new as you suggest) thing was > the first that came to my mind for the intermediate solution as well. Of > course that doesn't fix the code which doesn't dispose of the objects in > the UI or model... > > > Joachim > > > > > Am 01.04.20 um 08:42 schrieb Tim Mackinnon: > > Hi Russ - a quick look at your stats seems to indicate that something is > holding on to your model, I didn’t understand the first object growing by > 2, but the second increases by 1 each time, and it looks like some form of > root object holding on to the others ? This of course means the GC can’t > reclaim the chain of objects if something is holding on to that root > globally. > > Assigning something in the playground will hold onto it (I believe) so you > can continue to reuse and inspect it - so that’s expected, but this looks > like something in your UI? > > You can break the chain manually (but it’s not a full solution), simply > iterate over your root and become: String new (Save your image before doing > it and see if it works to free up the cycles). Eg try something like this > (haven’t tried this in Pharo myself, but worked in VA, so it should work > here) > > MyRootModel allInstances do: [ :m | m become: String new ] > > If this works and reduces your memory usage, you now need to inspect one > of those MyRootModel instances and see who is referencing it, and explain > why. This is Sven’s pointerTo explanation. > > For roots, you sometimes can use a WeakDictionary so that when nothing is > referencing them, they get gc’d if you are doing some caching or have some > factory concept. > > It’s not uncommon to hit this when you get your system nearing completion > , it’s the downside of not having to worry about memory referencing - > ultimately you have to worry about it at the edges. > > It is possible there is a Pharo bug, as over time I see large Pharo images > but I was just messing around and put it down to failed experiments. > > Hope this helps. > > Tim > > On 31 Mar 2020, at 20:47, Russ Whaley <whaley.r...@gmail.com> > <whaley.r...@gmail.com> wrote: > > > Here is some additional data - attached - I checked the number of > instances on select Classes before a UI load, during the UI load and after > the UI load (and again). The class instances grow as expected, but do no > release. I'm doing something wrong. I'm going to try a fresh image next, > however, I expect the same thing to happen, just starting over at zero. > > > > On Tue, Mar 31, 2020 at 12:57 PM Russ Whaley <whaley.r...@gmail.com> > wrote: > >> Dario, >> Thanks for the reply! >> >> When I closed my image - after running that huge query and leaving it in >> an inspector... my image grew to 1.3GB, lol. >> >> When I closed the inspector, and all the class browsers, did the garbage >> collection, etc., it dropped back to 384MB. Still huge, and all my Class >> instances are still there. I'm getting ready to also drop my Playground - >> after I copy all the code snippets out and see if that has any impact. I'm >> also going to try a fresh image and see if there is the same growth pattern >> as here. >> >> Perhaps I'm doing something wrong with the way I'm creating and storing >> my object instances - which is generally Class new, fill out some >> attributes, then add it to a collection or Dictionary. >> >> All my Object tests create sample data (objects) - over and over as well. >> >> >> On Tue, Mar 31, 2020 at 12:20 PM dario.trussardi65 < >> dario.trussard...@gmail.com> wrote: >> >>> Ciao, >>> >>> >>> > My image size keeps growing and growing. I've been scouring Google >>> and mailing lists, trying to find a solution. >>> >>> i have the same problem with a Pharo 7 image. >>> >>> Maybe it has nothing to do. >>> >>> But after close all the class browser windows the image save >>> return to a " valid " size. >>> >>> Dario >>> >> >> >> -- >> Russ Whaley >> whaley.r...@gmail.com >> > > > -- > Russ Whaley > whaley.r...@gmail.com > <Class instances tests.pdf> > > > -- > ----------------------------------------------------------------------- > Objektfabrik Joachim Tuchel mailto:jtuc...@objektfabrik.de > <jtuc...@objektfabrik.de> > Fliederweg 1 http://www.objektfabrik.de > D-71640 Ludwigsburg http://joachimtuchel.wordpress.com > Telefon: +49 7141 56 10 86 0 Fax: +49 7141 56 10 86 1 > > > > >