On Tue, Apr 27, 2010 at 1:19 PM, Adrian Lienhard <[email protected]> wrote:
> Its a simple method in Object:
>
> Object>>sizeInMemory
> "Returns the number of bytes used by this object in memory
> (including its header)"
>
> | headerSize instanceSize |
> headerSize := (self class indexIfCompact > 0 ifTrue: [ 4 ] ifFalse:
> [ 8 ]).
> instanceSize := (self class isVariable
> ifFalse: [ self class instSize * Smalltalk wordSize ]
> ifTrue: [ (self basicSize * (self class isBytes
> ifTrue: [ 1 ] ifFalse: [ Smalltalk wordSize ])) ]).
> ^ headerSize + instanceSize
>
>
Hi Adrian. Sorry for returning to this thread. I am trying to contemplate
all the cases.
I was looking at SpaceTally and I found that maybe a better implementation
could be something like this:
Object >> sizeInMemory
"Answer the number of bytes consumed by this instance including object
header."
| isCompact instVarBytes bytesPerElement headerBytes total contentBytes
|
isCompact := self class indexIfCompact > 0.
instVarBytes := self class instSize * 4.
self class isVariable
ifTrue: [
bytesPerElement := self class isBytes ifTrue: [1] ifFalse: [4].
total := 0.
contentBytes := instVarBytes + (self basicSize *
bytesPerElement).
headerBytes :=
contentBytes > 255
ifTrue: [12]
ifFalse: [isCompact ifTrue: [4] ifFalse: [8]].
total := headerBytes + contentBytes.
^ total]
ifFalse: [
headerBytes :=
instVarBytes > 255
ifTrue: [12]
ifFalse: [isCompact ifTrue: [4] ifFalse: [8]].
^ headerBytes + instVarBytes ].
I guess I did some mistake but if we can arrive to a good implementation it
would be really cool.
Thanks
mariano
> Please also note the other mail I sent to this thread.
>
> Adrian
>
> On Apr 27, 2010, at 13:16 , Mariano Martinez Peck wrote:
>
> > On Tue, Apr 27, 2010 at 12:45 PM, Adrian Lienhard <[email protected]>
> wrote:
> >
> >> I once sent some code to the mailing list (search for thread named "Size
> of
> >> objects").
> >
> >
> > Thanks Adrian...I couldn't find it. Can you forward it to me please? or
> > just send me the code...
> >
> >
> >> We should add this to the image. I think I named it #sizeInMemory.
> >>
> >>
> > There are only changes to the image side ? or the vm also ?
> >
> > Thanks
> >
> > Mariano
> >
> >
> >
> >> Adrian
> >>
> >> On Apr 27, 2010, at 12:03 , Mariano Martinez Peck wrote:
> >>
> >>> Hi. I don't know if "memory occupation" is the better name. I just want
> >> to
> >>> know the amount of memory that an object is occupying in RAM. I mean,
> the
> >>> amount of bytes.
> >>>
> >>> Is this possible ? if true, how ? I would like to do it from both
> >> sides:
> >>> image and VM.
> >>>
> >>> I checked both but I didn't find anything.
> >>>
> >>> Thanks in advance
> >>>
> >>> Mariano
> >>> _______________________________________________
> >>> Pharo-project mailing list
> >>> [email protected]
> >>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
> >>
> >>
> >> _______________________________________________
> >> Pharo-project mailing list
> >> [email protected]
> >> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
> >>
> > _______________________________________________
> > Pharo-project mailing list
> > [email protected]
> > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
>
> _______________________________________________
> Pharo-project mailing list
> [email protected]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project