Huge image

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Huge image

Pharo Smalltalk Users mailing list
Guys, I've a bloated image and I don't know why it's so huge and how to
shrink it.
It happened that my image has grown from 50MB to 440MB in a morning.

I've already followed these suggestions
https://github.com/pharo-project/pharo-core/wiki/Memory-Hogs and flushing
monticello repos the image reduced itself to 219MB, better.

Anyway I don't know how to reduce it more. Evaluating: SmalltalkImage
current reportCPUandRAM I found

you can see ByteStrings occupy 85.5% of space!

I tried to inspect instances of ByteString, but I can't find anything worth
of. If I Open pointers to the instance I find references to GLMPanePort,
GLMPane and NodeModel (see attached png)

I'm on Pharo 4

TIA
Davide

<http://forum.world.st/file/n4876854/huge_image.png>



--
View this message in context: http://forum.world.st/Huge-image-tp4876854.html
Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.

Reply | Threaded
Open this post in threaded view
|

Re: Huge image

Dale Henrichs-3
David,

I don't have a direct solution, but I have been playing with an analysis
technique for solving this particular type of problem: scads of Strings
and a need to "make sense of the reference graph".

If you look at this example[1], you'll see that there are 202K instances
of String (this example is from a GemStone db). the nodes pointing to
the String node, show that of the 202K strings, there are 70K instances
of Array referencing one or more of the 202k strings; 47K instances of
MCVersionInfo  and 43K MethodVersionRecord instances.

I've found that this approach can help you understand why you have so
many strings ...

The basic technique is to gather the instances of String, then for each
instance of string, gather the collection of objects that reference the
String instance and summarize the reference by class instance count and
keep an IdentitySet of the instances referencing Strings by class so
that you can build the next level of references ....

  For GemStone, this information is displayed using Roassal2 and the
calculations are done by scanning a backup of the repository...

You could probably brute force calculate this in Pharo (be sure to
isolate the objects that you are using in your analysis from the set of
objects being analyzed otherwise things get out of control ...

HTH,

Dale


[1]
https://github.com/dalehenrich/obex#class-instance-counts-based-on-selected-set-of-instances



Reply | Threaded
Open this post in threaded view
|

Re: Huge image

Davide Varvello
I don't know why my original message isn't accepted by the list, but it's on forum: http://forum.world.st/Huge-image-td4876854.html

Anyway, thanks Dale, I'm going to try your suggestion.

Davide


Dale Henrichs-3 wrote
David,

I don't have a direct solution, but I have been playing with an analysis
technique for solving this particular type of problem: scads of Strings
and a need to "make sense of the reference graph".

If you look at this example[1], you'll see that there are 202K instances
of String (this example is from a GemStone db). the nodes pointing to
the String node, show that of the 202K strings, there are 70K instances
of Array referencing one or more of the 202k strings; 47K instances of
MCVersionInfo  and 43K MethodVersionRecord instances.

I've found that this approach can help you understand why you have so
many strings ...

The basic technique is to gather the instances of String, then for each
instance of string, gather the collection of objects that reference the
String instance and summarize the reference by class instance count and
keep an IdentitySet of the instances referencing Strings by class so
that you can build the next level of references ....

  For GemStone, this information is displayed using Roassal2 and the
calculations are done by scanning a backup of the repository...

You could probably brute force calculate this in Pharo (be sure to
isolate the objects that you are using in your analysis from the set of
objects being analyzed otherwise things get out of control ...

HTH,

Dale


[1]
https://github.com/dalehenrich/obex#class-instance-counts-based-on-selected-set-of-instances
Reply | Threaded
Open this post in threaded view
|

Re: Huge image

Pharo Smalltalk Users mailing list
In reply to this post by Dale Henrichs-3
I don't know why my original message isn't accepted by the list, but it's on
forum: http://forum.world.st/Huge-image-td4876854.html

Anyway, thanks Dale, I'm going to try your suggestion.

Davide



Dale Henrichs-3 wrote

> David,
>
> I don't have a direct solution, but I have been playing with an analysis
> technique for solving this particular type of problem: scads of Strings
> and a need to "make sense of the reference graph".
>
> If you look at this example[1], you'll see that there are 202K instances
> of String (this example is from a GemStone db). the nodes pointing to
> the String node, show that of the 202K strings, there are 70K instances
> of Array referencing one or more of the 202k strings; 47K instances of
> MCVersionInfo  and 43K MethodVersionRecord instances.
>
> I've found that this approach can help you understand why you have so
> many strings ...
>
> The basic technique is to gather the instances of String, then for each
> instance of string, gather the collection of objects that reference the
> String instance and summarize the reference by class instance count and
> keep an IdentitySet of the instances referencing Strings by class so
> that you can build the next level of references ....
>
>   For GemStone, this information is displayed using Roassal2 and the
> calculations are done by scanning a backup of the repository...
>
> You could probably brute force calculate this in Pharo (be sure to
> isolate the objects that you are using in your analysis from the set of
> objects being analyzed otherwise things get out of control ...
>
> HTH,
>
> Dale
>
>
> [1]
> https://github.com/dalehenrich/obex#class-instance-counts-based-on-selected-set-of-instances





--
View this message in context: http://forum.world.st/Huge-image-tp4876855p4876977.html
Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.