On Tue, Apr 27, 2010 at 1:19 PM, Adrian Lienhard <adi@netstyle.ch> 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 <adi@netstyle.ch> 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 Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project