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

Eliot Miranda eliot.miranda at gmail.com
Mon Sep 27 21:02:56 UTC 2010


On Mon, Sep 27, 2010 at 12:20 PM, Mariano Martinez Peck <
marianopeck at gmail.com> wrote:

>
>
>
> 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?
>

0 bytes, obviously.  The only space occupied by a SmallInteger is the space
of the slot containing it.  There is no SmallInteger object beyond the slot.


>
> 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/61ec4f52/attachment-0001.htm


More information about the Vm-dev mailing list