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

Reply via email to