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
>
>
>
>
>

Reply via email to