/usr/share/gnu-smalltalk/examples/MemUsage.st is in gnu-smalltalk-common 3.2.4-2.1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | "======================================================================
|
| Compute the amount of memory and the number of instances for each
| class in the GNU Smalltalk system.
|
|
======================================================================"
"======================================================================
|
| Copyright 1988,92,94,95,99,2000,2002 Free Software Foundation, Inc.
| Written by Steve Byrne.
|
| This file is part of GNU Smalltalk.
|
| GNU Smalltalk is free software; you can redistribute it and/or modify it
| under the terms of the GNU General Public License as published by the Free
| Software Foundation; either version 2, or (at your option) any later version.
|
| GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
| FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
| details.
|
| You should have received a copy of the GNU General Public License along with
| GNU Smalltalk; see the file LICENSE. If not, write to the Free Software
| Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
======================================================================"
!ObjectMemory class methodsFor: 'demo'!
memoryUsage
| t numObjs classObjs totalInstanceSize instVarSize |
numObjs := t := 0.
ObjectMemory compact.
Object withAllSubclasses do: [ :class |
class printNl.
totalInstanceSize := classObjs := 0.
instVarSize := class instSize.
(class inheritsFrom: ContextPart) ifFalse: [
class allInstancesDo: [ :inst |
totalInstanceSize := totalInstanceSize +
((Memory at: (ObjectMemory addressOf: inst)) * 4).
classObjs := classObjs + 1 ]
].
Transcript nextPutAll: ' Instances: '. classObjs printNl.
Transcript nextPutAll: ' Size: '. totalInstanceSize printNl.
Transcript nl.
t := t + totalInstanceSize.
numObjs := numObjs + classObjs ].
^numObjs -> t
!
histogram
| sizes size |
ObjectMemory compact.
sizes := Bag new.
Object withAllSubclasses do: [ :class |
(class inheritsFrom: ContextPart)
ifFalse: [
class allInstancesDo: [ :inst |
size := (Memory at: (ObjectMemory addressOf: inst)).
sizes add: size ]
].
].
sizes printNl.
! !
ObjectMemory memoryUsage printNl!
ObjectMemory histogram printNl!
|