[Vm-dev] Re: [Pharo-project] is it possible to know the memory occupation (bytes) of an object?

Mariano Martinez Peck marianopeck at gmail.com
Mon Sep 27 19:20:05 UTC 2010


On Wed, Sep 22, 2010 at 12:34 PM, Mariano Martinez Peck <
marianopeck at gmail.com> wrote:

>
>
> On Wed, Sep 22, 2010 at 12:12 PM, Henrik Johansen <
> henrik.s.johansen at veloxit.no> wrote:
>
>>
>> On Sep 22, 2010, at 9:59 40AM, Adrian Lienhard wrote:
>>
>> > Some notes:
>> >
>> > - What should be answered for small ints? 1 sizeInMemory -->8. That's
>> wrong. Shouldn't this answer 0?
>>
>> Philosophical question really, imo both 4 (Again, in 32bit images at
>> least) and 0 would be "correct" answers in their own ways. 8 is definitely
>> wrong though :)
>> The method comment should probably highlight which definition is used.
>>
>>

So....what should we consider for SmallInteger ?   4 bytes or 0 bytes?

I would like to compute the really used memory.

thanks

mariano


>
> At the beginning I also thought to have 4, instead of 0. The problem is
> that if you put 4 and you have an object with and instVar that it is a
> SmallInteger, it will be counted twice, when actually it is only one.
> That's why I thoguht 0 was better, since I want the really occupated
> memory. On the other hand, if you do "4 sizeInMemory" and see zero, I have
> to admit it is a litlte confusing.
>
> The problem is that if I do for example:
>
> Class >> spaceForInstances
>     | totalSize |
>     totalSize := 0.
>     self allInstancesDo: [ :inst |
>         totalSize := totalSize + inst sizeInMemory.
>     ].
>     ^ totalSize
>
> SmallInteger spaceForInstances  ->>  0
>
> So I don't know...maybe we have to answer 4 instead of 0?
>
> Adrian what do you think?
>
>  >
>> > - In the line contentBytes := contentBytes + (self basicSize *
>> bytesPerElement), why is contentBytes added because it should be always 0
>> because self class instSize should return 0 in case of variable classes. Or
>> do I miss something?
>> You can have instance variables in variable classes:
>>
>> ArrayedCollection variableSubclass: #TallyArray
>>        instanceVariableNames: 'tally'
>>        classVariableNames: ''
>>        poolDictionaries: ''
>>        category: 'Collections-Arrayed'
>>
>> TallyArray instSize 1
>> (TallyArray new: 5) basicSize 5
>>
>> Sure, they're not used very often in Squeak/Pharo since become: is so
>> slow, but there's no theoretical reason why you can't for example implement
>> Set as a variable subclass with a tally inst var.
>>
>> >
>> > - Please remove the inline comment "inst vars"; if a comment is needed
>> it should go into the main comment.
>> I agree, should be self-explanatory.
>>
>> Cheers,
>> Henry
>> _______________________________________________
>> Pharo-project mailing list
>> Pharo-project at lists.gforge.inria.fr
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20100927/c98ae69d/attachment.htm


More information about the Vm-dev mailing list