Hi,
at the moment I'm developing an application with seaside, magritte and magma. If I start with a fresh image I only need a few days for the image to exceed 100MB in total size.
Is there a way do display the total amount of objects being in the image? I think only a vast amount of objects could make the image grow that much. A list of object grouped by class and sorted by amount would be very helpful.
Is there any such tool?
regards,
Norbert
-----Original Message----- From: beginners-bounces@lists.squeakfoundation.org [mailto:beginners-bounces@lists.squeakfoundation.org] On Behalf Of Norbert Hartl Sent: Tuesday, November 28, 2006 5:03 PM To: Squeak Newbies List Subject: [Newbies] Growing image
Hi,
at the moment I'm developing an application with seaside, magritte and magma. If I start with a fresh image I only need a few days for the image to exceed 100MB in total size.
Is there a way do display the total amount of objects being in the image? I think only a vast amount of objects could make the image grow that much. A list of object grouped by class and sorted by amount would be very helpful.
Is there any such tool?
regards,
Norbert
Inspect the result of the following...
(((Object allSubclasses reject: [:each | Class allSubclasses includes: each]) select: [:each | each allInstances size > 100]) collect: [:each | each name -> each allInstances size]) asSortedCollection: [:a :b | a value > b value]
It's not fast, but it'll get you what you want.
Ramon Leon http://onsmalltalk.com
Hi Norbert,
the tool is Smalltalk, just inspect
(((Smalltalk allClasses collect: [:each | each name -> each instanceCount ]) reject: [:each | each value = 0]) asSortedCollection: [:a :b | b value < a value]) asArray
This gives # of objects per class, in a nice GUI :-)
/Klaus
P.S. expect it to run minutes in a large image!
On Wed, 29 Nov 2006 01:02:44 +0100, Norbert Hartl wrote:
Hi,
at the moment I'm developing an application with seaside, magritte and magma. If I start with a fresh image I only need a few days for the image to exceed 100MB in total size.
Is there a way do display the total amount of objects being in the image? I think only a vast amount of objects could make the image grow that much. A list of object grouped by class and sorted by amount would be very helpful.
Is there any such tool?
regards,
Norbert
On Wed, 2006-11-29 at 01:52 +0100, Klaus D. Witzel wrote:
Hi Norbert,
the tool is Smalltalk, just inspect
(((Smalltalk allClasses collect: [:each | each name -> each instanceCount ]) reject: [:each | each value = 0]) asSortedCollection: [:a :b | b value < a value]) asArray
This gives # of objects per class, in a nice GUI :-)
Thanks, this is quite good. I have now a statistic like:
246565 WeakArray 241929 WeakKeyAssociation 179848 ByteString 171165 Array 159003 Association 130254 WeakValueAssociation
What is the best way to determine where this instances are referenced. Do I have to use PointerFinder or Smalltalk browseAllObjectReferencesTo: or is there better way?
thanks for your help, this goes also to Ramon and David. You are very helpful, guys.
Norbert
Hi Norbert,
you may want to put one of your app names {seaside. magritte. magma} and one of the class names into google search. The search result connects you immediately to the collective knowledge of the Squeak community, example:
- http://www.google.com/search?q=weakarray+seaside
Besides of that, you can look for class references and find the guilty who send #new or #new: to one of the classes.
/Klaus
On Wed, 29 Nov 2006 13:00:59 +0100, Norbert Hartl norbert@hartl.name wrote:
On Wed, 2006-11-29 at 01:52 +0100, Klaus D. Witzel wrote:
Hi Norbert,
the tool is Smalltalk, just inspect
(((Smalltalk allClasses collect: [:each | each name -> each instanceCount ]) reject: [:each | each value = 0]) asSortedCollection: [:a :b | b value < a value]) asArray
This gives # of objects per class, in a nice GUI :-)
Thanks, this is quite good. I have now a statistic like:
246565 WeakArray 241929 WeakKeyAssociation 179848 ByteString 171165 Array 159003 Association 130254 WeakValueAssociation
What is the best way to determine where this instances are referenced. Do I have to use PointerFinder or Smalltalk browseAllObjectReferencesTo: or is there better way?
thanks for your help, this goes also to Ramon and David. You are very helpful, guys.
Norbert
Hello Norbert, Have you seen the "Cleaning up junk" swiki page? http://minnow.cc.gatech.edu/squeak/2176
I hope it helps.
r.
On Wed, Nov 29, 2006 at 01:02:44AM +0100, Norbert Hartl wrote:
Hi,
at the moment I'm developing an application with seaside, magritte and magma. If I start with a fresh image I only need a few days for the image to exceed 100MB in total size.
Is there a way do display the total amount of objects being in the image? I think only a vast amount of objects could make the image grow that much. A list of object grouped by class and sorted by amount would be very helpful.
Is there any such tool?
Some of this may be out of date, but the information here may help: http://minnow.cc.gatech.edu/squeak/2176
Also look at class SpaceTally, which is intended for tallying up object memory usage by classes.
Dave
beginners@lists.squeakfoundation.org