[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