Hi Denis, On Wed, Apr 20, 2016 at 9:15 AM, Denis Kudriashov <dionisi...@gmail.com> wrote:
> > 2016-04-20 17:47 GMT+02:00 Eliot Miranda <eliot.mira...@gmail.com>: > >> Hi Pavel, >> >> On Apr 20, 2016, at 6:54 AM, Pavel Krivanek <pavel.kriva...@gmail.com> >> wrote: >> >> That is not real amount of objects in the object memory: >> >> count := 0. >> object := 0 someObject. >> [object == 0] whileFalse: [ >> count := count + 1. >> object := object nextObject ]. >> count. "->724653" >> >> >> Right. allObjects size is approximately equal to Object allSubInstances >> (but much faster to evaluate, since it makes only a single heap >> traversal). Class allSubInstances answers only classes, not those class's >> instances. >> > > But my test was not about Object allSubInstances but about Object > allSubclasses. > I supposed that "Class allSubInstances size" should equal "(Class > *allSubclasses* flatCollect: [ :each | each allInstances ]) size". But it > is not. And it is surprised me. Interesting to know why. > I understand. I was answering Pavel's query. Your question was answered (albeit teasingly) by Ben: "Strange that its out by a factor of two. It's almost like each class is also an object ;)". Class allSubclasses includes only the metaclasses. Object allSubclasses includes the classes too. These two (from a Squeak image) are almost equal: (Class withAllSubclasses asSet addAll: (Class allSubclasses collect: #soleInstance); yourself) size 6468 Object withAllSubclasses size 6456 Class withAllSubclasses first: 5 => an OrderedCollection(Class ProtoObject class Object class ObjectOut class ImageSegmentRootStub class) Class withAllSubclasses last: 5 an OrderedCollection(ScSmiAddOp class ScSmiEqualOp class ScSmiLessOp class ScSmiLessOrEqualOp class ScSmiNotEqualOp class) Object withAllSubclasses first: 5 => an OrderedCollection(Object BalloonState SoundCodec StandardFileMenuResult UndefinedObject) Object withAllSubclasses last: 5 => an OrderedCollection(ScSmiAddOp class ScSmiEqualOp class ScSmiLessOp class ScSmiLessOrEqualOp class ScSmiNotEqualOp class) _,,,^..^,,,_ best, Eliot