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