Oh crap.. the problem is not in that.

MC produces huge weak-key dictionary during updates
for instance 12159 -> 12162
produces dictionary with 14k entries,
which sits in #FinalizationDependents array
and scanned after each GC.

And during scanning, its using block closures (and each push of block
closure consuming memory),
so it big enough to trigger another GC.

And its self-supporting process of wasting CPU cycles just for nothing...


Here some numbers:
(note, i din't installed new finalization code yet)

MCMethodDefinition cachedDefinitions size
 14987

[MCMethodDefinition cachedDefinitions finalizeValues ] timeToRun
10

so, it spends 10 ms dueing each GC cycle for scanning it.

So, the quest is to avoid using block closures during scanning it,
so it won't produce garbage.

-- 
Best regards,
Igor Stasenko AKA sig.

_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

Reply via email to