Well, here is what I do get: (I guess some stuff scrolled up too far in the transcript) Image size before cleaning HashedCollection : 320691776----SNAPSHOT----an Array(1 August 2013 12:21:29 am) Pharo-DripfeedIt-Magritte3-OpenDBX_20130729_1154-Prod_Cleaning.image priorSource: 119932535 Image size after cleaning HashedCollection : 323444020Image size before cleaning RecentMessageList : 323444020----SNAPSHOT----an Array(1 August 2013 12:21:46 am) Pharo-DripfeedIt-Magritte3-OpenDBX_20130729_1154-Prod_Cleaning.image priorSource: 119936948 Image size after cleaning RecentMessageList : 323492924Image size before cleaning ChangeSet : 323492924----SNAPSHOT----an Array(1 August 2013 12:22:01 am) Pharo-DripfeedIt-Magritte3-OpenDBX_20130729_1154-Prod_Cleaning.image priorSource: 119937094 Image size after cleaning ChangeSet : 323557656Image size before cleaning SystemOrganizer : 323557656----SNAPSHOT----an Array(1 August 2013 12:22:16 am) Pharo-DripfeedIt-Magritte3-OpenDBX_20130729_1154-Prod_Cleaning.image priorSource: 119937240 Image size after cleaning SystemOrganizer : 323621024Image size before cleaning MCDefinition : 323621024----SNAPSHOT----an Array(1 August 2013 12:22:31 am) Pharo-DripfeedIt-Magritte3-OpenDBX_20130729_1154-Prod_Cleaning.image priorSource: 119937386 Image size after cleaning MCDefinition : 323685312Image size before cleaning Behavior : 323685312----SNAPSHOT----an Array(1 August 2013 12:22:46 am) Pharo-DripfeedIt-Magritte3-OpenDBX_20130729_1154-Prod_Cleaning.image priorSource: 119937532 Image size after cleaning Behavior : 323749188Image size before cleaning Workspace : 323749188----SNAPSHOT----an Array(1 August 2013 12:23:01 am) Pharo-DripfeedIt-Magritte3-OpenDBX_20130729_1154-Prod_Cleaning.image priorSource: 119937678 Image size after cleaning Workspace : 323797016Image size before cleaning AppRegistry : 323797016----SNAPSHOT----an Array(1 August 2013 12:23:16 am) Pharo-DripfeedIt-Magritte3-OpenDBX_20130729_1154-Prod_Cleaning.image priorSource: 119937824 Image size after cleaning AppRegistry : 323860980Image size before cleaning MCFileBasedRepository : 323860980----SNAPSHOT----an Array(1 August 2013 12:23:34 am) Pharo-DripfeedIt-Magritte3-OpenDBX_20130729_1154-Prod_Cleaning.image priorSource: 119937970 Image size after cleaning MCFileBasedRepository : 323924988Image size before cleaning ClassOrganizer : 323924988----SNAPSHOT----an Array(1 August 2013 12:23:51 am) Pharo-DripfeedIt-Magritte3-OpenDBX_20130729_1154-Prod_Cleaning.image priorSource: 119938116 Image size after cleaning ClassOrganizer : 323989128Image size before cleaning FreeTypeCache : 323989128----SNAPSHOT----an Array(1 August 2013 12:24:06 am) Pharo-DripfeedIt-Magritte3-OpenDBX_20130729_1154-Prod_Cleaning.image priorSource: 119938262 Image size after cleaning FreeTypeCache : 324053128Image size before cleaning NOCCompletionTable : 324053128----SNAPSHOT----an Array(1 August 2013 12:24:21 am) Pharo-DripfeedIt-Magritte3-OpenDBX_20130729_1154-Prod_Cleaning.image priorSource: 119938408 Image size after cleaning NOCCompletionTable : 324117108Image size before cleaning NaturalLanguageTranslator : 324117108----SNAPSHOT----an Array(1 August 2013 12:24:36 am) Pharo-DripfeedIt-Magritte3-OpenDBX_20130729_1154-Prod_Cleaning.image priorSource: 119938554 Image size after cleaning NaturalLanguageTranslator : 324181356Image size before cleaning ScrollBar : 324181356----SNAPSHOT----an Array(1 August 2013 12:24:52 am) Pharo-DripfeedIt-Magritte3-OpenDBX_20130729_1154-Prod_Cleaning.image priorSource: 119938700 Image size after cleaning ScrollBar : 324241728Image size before cleaning FileServices : 324241728----SNAPSHOT----an Array(1 August 2013 12:25:07 am) Pharo-DripfeedIt-Magritte3-OpenDBX_20130729_1154-Prod_Cleaning.image priorSource: 119938846 Image size after cleaning FileServices : 324311268Image size before cleaning EventManager : 324311268----SNAPSHOT----an Array(1 August 2013 12:25:23 am) Pharo-DripfeedIt-Magritte3-OpenDBX_20130729_1154-Prod_Cleaning.image priorSource: 119938992 Image size after cleaning EventManager : 324375192Image size before cleaning PasteUpMorph : 324375192----SNAPSHOT----an Array(1 August 2013 12:25:38 am) Pharo-DripfeedIt-Magritte3-OpenDBX_20130729_1154-Prod_Cleaning.image priorSource: 119939138 Image size after cleaning PasteUpMorph : 324439164Image size before cleaning BitBlt : 324439164----SNAPSHOT----an Array(1 August 2013 12:25:54 am) Pharo-DripfeedIt-Magritte3-OpenDBX_20130729_1154-Prod_Cleaning.image priorSource: 119939284 Image size after cleaning BitBlt : 324156860Image size before cleaning GradientFillStyle : 324156860----SNAPSHOT----an Array(1 August 2013 12:26:11 am) Pharo-DripfeedIt-Magritte3-OpenDBX_20130729_1154-Prod_Cleaning.image priorSource: 119939430 Image size after cleaning GradientFillStyle : 324389584Image size before cleaning NaturalLanguageFormTranslator : 324389584----SNAPSHOT----an Array(1 August 2013 12:26:26 am) Pharo-DripfeedIt-Magritte3-OpenDBX_20130729_1154-Prod_Cleaning.image priorSource: 119939576 Image size after cleaning NaturalLanguageFormTranslator : 324460080Image size before cleaning ProcessBrowser : 324460080----SNAPSHOT----an Array(1 August 2013 12:26:40 am) Pharo-DripfeedIt-Magritte3-OpenDBX_20130729_1154-Prod_Cleaning.image priorSource: 119939722 Image size after cleaning ProcessBrowser : 324524292Image size before cleaning StrikeFont : 324524292----SNAPSHOT----an Array(1 August 2013 12:26:56 am) Pharo-DripfeedIt-Magritte3-OpenDBX_20130729_1154-Prod_Cleaning.image priorSource: 119939868 Image size after cleaning StrikeFont : 324588200Image size before cleaning MCDataStream : 324588200----SNAPSHOT----an Array(1 August 2013 12:27:11 am) Pharo-DripfeedIt-Magritte3-OpenDBX_20130729_1154-Prod_Cleaning.image priorSource: 119940014 Image size after cleaning MCDataStream : 324652584Image size before cleaning CompiledMethod : 324652584----SNAPSHOT----an Array(1 August 2013 12:27:27 am) Pharo-DripfeedIt-Magritte3-OpenDBX_20130729_1154-Prod_Cleaning.image priorSource: 119940160 Image size after cleaning CompiledMethod : 324716520Image size before cleaning SmalltalkImage : 324716520----SNAPSHOT----an Array(1 August 2013 12:27:49 am) Pharo-DripfeedIt-Magritte3-OpenDBX_20130729_1154-Prod_Cleaning.image priorSource: 119940306 Image size after cleaning SmalltalkImage : 324764312Image size before cleaning Symbol : 324764312----SNAPSHOT----an Array(1 August 2013 12:28:07 am) Pharo-DripfeedIt-Magritte3-OpenDBX_20130729_1154-Prod_Cleaning.image priorSource: 119940452 Image size after cleaning Symbol : 324787420Image size before cleaning Browser : 324787420----SNAPSHOT----an Array(1 August 2013 12:28:23 am) Pharo-DripfeedIt-Magritte3-OpenDBX_20130729_1154-Prod_Cleaning.image priorSource: 119940598 Image size after cleaning Browser : 324852504Image size before cleaning MCMethodDefinition : 324852504----SNAPSHOT----an Array(1 August 2013 12:28:39 am) Pharo-DripfeedIt-Magritte3-OpenDBX_20130729_1154-Prod_Cleaning.image priorSource: 119940744 Image size after cleaning MCMethodDefinition : 324916888 The image actually grew bigger... Now trying the flush caches thing. Phil On Wed, Jul 31, 2013 at 8:53 PM, Mariano Martinez Peck < marianopeck@gmail.com> wrote:
OK, this was was my experiment....
Image fresh with all my app and dependencies loades: 30MB
After using it for some days/weeks: 160MB.
SpaceTally new printSpaceAnalysis showed:
Class code space # instances inst space percent inst average size ByteString 2785 413144 116244078 69.90 281.36 Array 3712 181772 8466668 5.10 46.58 ByteArray 8574 1319 8186802 4.90 6206.82 Bitmap 3653 303 6656340 4.00 21968.12 CompiledMethod 22467 90554 5685374 3.40 62.78
After executing ImageCleaner cleanUpForRelease: 36MB
Then...I searched which part of #cleanUpForRelease: was making the difference, and it was:
Smalltalk cleanUp: true except: #() confirming: false.
So now it was time to know WHICH class did the diference, so I modified #cleanUp: aggressive except: exclusions confirming: aBool
in these lines:
"Run the cleanup code" classes do:[:aClass| Transcript show: 'Image size before cleaning ', aClass name, ' : ', Smalltalk imagePath asFileReference size asString. aClass cleanUp: aggressive. 3 timesRepeat: [Smalltalk garbageCollect]. Smalltalk snapshot: true andQuit: false. Transcript show: 'Image size after cleaning ', aClass name, ' : ', Smalltalk imagePath asFileReference size asString. ] displayingProgress: [:aClass| 'Cleaning up in ', aClass name]. I then opened a Transcript, and evaluated
Smalltalk cleanUp: true except: #() confirming: false.
I went to prepare Mate, and when I come back, the result was, of course:
"Image size after cleaning MCFileBasedRepository : 39744008"
That clean up ends up doing:
flushAllCaches self allSubInstancesDo: [:ea | ea flushCache] So it sends #flushCache to all instances of MCHttpRepository and MCFileBasedRepository.
Now what I wanted to see if it there was a particular repo that could take most of the space (like package-cache). And indeed, it was...I modified #flushCaches to:
flushAllCaches | file | file := 'repos.txt' asFileReference writeStream text. self allSubInstancesDo: [:each | file nextPutAll: 'Image size before cleaning ', each printString, ' : ', Smalltalk imagePath asFileReference size asString; cr. each flushCache. 3 timesRepeat: [Smalltalk garbageCollect]. Smalltalk snapshot: true andQuit: false. file nextPutAll: 'Image size after cleaning ', each printString, ' : ', Smalltalk imagePath asFileReference size asString;cr. ]. file flush; close. And then I looked in the 'repos.txt' file. My package cache repo cleaned 60 MB. Glorp cleaned 35MB. Seaside30 cleaned 10MB. So...cleaning cache of just 3 repos frees approx 100MB.
The question is....can we flush the cache safely? If they are called "cache", then I guess yes, we can.
Thoughts?
Thanks,
On Wed, Jul 31, 2013 at 10:48 AM, Mariano Martinez Peck < marianopeck@gmail.com> wrote:
Guys, I have images also with seaside, magritte, glorp, postgresV2, etc and it is also around 200MB. I will try to do some research today and let you know.
Cheers,
On Tue, Jul 30, 2013 at 8:55 AM, Marcus Denker <marcus.denker@inria.fr>wrote:
On Jul 30, 2013, at 1:49 PM, "phil@highoctane.be" <phil@highoctane.be> wrote:
the changes file contained passwords and I replaced the text. So offsets may be wrong due to that.
Yes, the first thing I wanted to do is to recompile everything. Does not work.
Memorymonitor is not doing fanct stuff. It just counts instances.
Yes, but maybe it holds on to these instances?
Marcus
-- Mariano http://marianopeck.wordpress.com
-- Mariano http://marianopeck.wordpress.com