MemoryUsageView.st
author Jan Vrany <jan.vrany@labware.com>
Wed, 05 Oct 2022 11:57:26 +0100
branchjv
changeset 19637 28f5bfaa093d
parent 17136 cb908d2ba02e
permissions -rw-r--r--
`NewSystemBrowser`: avoid updating package info when changed class is not selected This speeds up loading of packages when browser is open as it does not (needlessly) update package info which may involve scm round-trip.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
45
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
     1
"
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
     2
 COPYRIGHT (c) 1992 by Claus Gittinger
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
     3
	      All Rights Reserved
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
     4
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
     5
 This software is furnished under a license and may be used
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
     6
 only in accordance with the terms of that license and with the
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
     8
 be provided or otherwise made available to, or used by, any
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
     9
 other person.  No title to or ownership of the software is
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
    10
 hereby transferred.
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
    11
"
2651
ec18d82620d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1823
diff changeset
    12
"{ Package: 'stx:libtool' }"
ec18d82620d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1823
diff changeset
    13
15318
06e31ccd4966 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 14921
diff changeset
    14
"{ NameSpace: Smalltalk }"
06e31ccd4966 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 14921
diff changeset
    15
19
4cde336c0794 Initial revision
claus
parents:
diff changeset
    16
StandardSystemView subclass:#MemoryUsageView
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    17
	instanceVariableNames:'rawInfo info list sortBlock titleLabel prevRawInfo
9925
99f229869094 class definition
Claus Gittinger <cg@exept.de>
parents: 9924
diff changeset
    18
		autoUpdateProcess autoUpdateInterval filter infoLabel'
9929
203ae73fb176 class definition
Claus Gittinger <cg@exept.de>
parents: 9925
diff changeset
    19
	classVariableNames:'LastSearchString'
437
9526cb043cbc list obsolete & removed classes separately
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
    20
	poolDictionaries:''
1053
9b1b15ef1e34 category change
Claus Gittinger <cg@exept.de>
parents: 1052
diff changeset
    21
	category:'Monitors-ST/X'
19
4cde336c0794 Initial revision
claus
parents:
diff changeset
    22
!
4cde336c0794 Initial revision
claus
parents:
diff changeset
    23
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    24
Object subclass:#StatisticEntry
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    25
	instanceVariableNames:'classNameOrSymbol overallByteSize minByteSize maxByteSize
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    26
		averageSize instanceCount instanceAllocationRate
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    27
		memoryAllocationRate'
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    28
	classVariableNames:''
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    29
	poolDictionaries:''
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    30
	privateIn:MemoryUsageView
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    31
!
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    32
769
56ecc821f8be checkin from browser
Claus Gittinger <cg@exept.de>
parents: 643
diff changeset
    33
!MemoryUsageView class methodsFor:'documentation'!
19
4cde336c0794 Initial revision
claus
parents:
diff changeset
    34
45
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
    35
copyright
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
    36
"
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
    37
 COPYRIGHT (c) 1992 by Claus Gittinger
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
    38
	      All Rights Reserved
19
4cde336c0794 Initial revision
claus
parents:
diff changeset
    39
45
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
    40
 This software is furnished under a license and may be used
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
    41
 only in accordance with the terms of that license and with the
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
    42
 inclusion of the above copyright notice.   This software may not
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
    43
 be provided or otherwise made available to, or used by, any
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
    44
 other person.  No title to or ownership of the software is
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
    45
 hereby transferred.
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
    46
"
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
    47
!
19
4cde336c0794 Initial revision
claus
parents:
diff changeset
    48
45
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
    49
documentation
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
    50
"
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
    51
    this view shows an overview over the memory usage of the system.
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
    52
    usage:
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    53
        MemoryUsageView new open
19
4cde336c0794 Initial revision
claus
parents:
diff changeset
    54
45
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
    55
    Since scanning all memory takes some time, this is not done
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
    56
    automatically, but upon request. See the middlebuttonmenu-'update'
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
    57
    function.
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    58
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    59
    This is a very old application - definitely needs some pimping to look better...
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    60
    ... any maybe a nice menu, graphical display etc.
45
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
    61
"
19
4cde336c0794 Initial revision
claus
parents:
diff changeset
    62
! !
4cde336c0794 Initial revision
claus
parents:
diff changeset
    63
1823
6ebeee55f0c4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1743
diff changeset
    64
!MemoryUsageView class methodsFor:'startup'!
6ebeee55f0c4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1743
diff changeset
    65
6ebeee55f0c4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1743
diff changeset
    66
isVisualStartable
6ebeee55f0c4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1743
diff changeset
    67
    ^ true
6ebeee55f0c4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1743
diff changeset
    68
6ebeee55f0c4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1743
diff changeset
    69
    "Created: / 10.8.1998 / 16:02:59 / cg"
6ebeee55f0c4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1743
diff changeset
    70
! !
6ebeee55f0c4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1743
diff changeset
    71
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    72
!MemoryUsageView methodsFor:'auto update'!
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    73
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    74
autoUpdate
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    75
    self pushEvent:#update
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    76
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    77
    "Created: / 05-05-2011 / 17:20:52 / cg"
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    78
!
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    79
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    80
autoUpdateInterval
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    81
    ^ autoUpdateInterval ? 30 seconds
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    82
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    83
    "Created: / 05-05-2011 / 17:20:49 / cg"
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    84
!
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    85
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    86
autoUpdateLoop
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    87
    [true] whileTrue:[
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    88
        self autoUpdate.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    89
        Delay waitFor:self autoUpdateInterval
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    90
    ].
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    91
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    92
    "Created: / 05-05-2011 / 17:20:44 / cg"
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    93
!
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    94
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    95
openAutoUpdateIntervalDialog
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    96
    |s|
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    97
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    98
    s := Dialog request:'Update interval [smh]:' initialAnswer:self autoUpdateInterval printString.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
    99
    s isEmptyOrNil ifTrue:[^ self].
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   100
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   101
    autoUpdateInterval := TimeDuration readFrom:s.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   102
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   103
    "Created: / 05-05-2011 / 17:24:48 / cg"
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   104
!
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   105
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   106
startAutoUpdateProcess
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   107
    autoUpdateProcess notNil ifTrue:[
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   108
        self stopAutoUpdateProcess.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   109
    ].
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   110
    autoUpdateProcess :=
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   111
        [
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   112
            self autoUpdateLoop
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   113
        ] fork
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   114
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   115
    "Created: / 05-05-2011 / 17:19:00 / cg"
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   116
!
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   117
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   118
stopAutoUpdateProcess
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   119
    |p|
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   120
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   121
    (p := autoUpdateProcess) notNil ifTrue:[
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   122
        autoUpdateProcess := nil.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   123
        p terminate.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   124
    ].
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   125
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   126
    "Created: / 05-05-2011 / 17:19:03 / cg"
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   127
! !
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   128
437
9526cb043cbc list obsolete & removed classes separately
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
   129
!MemoryUsageView methodsFor:'initialization'!
9526cb043cbc list obsolete & removed classes separately
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
   130
9526cb043cbc list obsolete & removed classes separately
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
   131
initialize
1348
f958dbefe269 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1273
diff changeset
   132
    |helpView headLine|
437
9526cb043cbc list obsolete & removed classes separately
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
   133
9526cb043cbc list obsolete & removed classes separately
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
   134
    super initialize.
4253
fb44beaa9aa1 menu labels
Claus Gittinger <cg@exept.de>
parents: 2987
diff changeset
   135
    self label:'Memory Usage'.
19
4cde336c0794 Initial revision
claus
parents:
diff changeset
   136
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   137
    headLine := ' Class' paddedTo:47 with:Character space.
15742
265bf8c878a0 class: MemoryUsageView
Stefan Vogel <sv@exept.de>
parents: 15379
diff changeset
   138
    headLine := headLine , '  # of Insts       Bytes   Avg sz   Max sz   %Mem  %Accum. +Insts    +Bytes'.
437
9526cb043cbc list obsolete & removed classes separately
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
   139
1348
f958dbefe269 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1273
diff changeset
   140
    titleLabel := Label in:self.
9925
99f229869094 class definition
Claus Gittinger <cg@exept.de>
parents: 9924
diff changeset
   141
    titleLabel origin:(0.0 @ 0.0) corner:(1.0 @ titleLabel preferredHeight).
1348
f958dbefe269 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1273
diff changeset
   142
    titleLabel borderWidth:0.
f958dbefe269 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1273
diff changeset
   143
    titleLabel label:headLine.
f958dbefe269 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1273
diff changeset
   144
    titleLabel adjust:#left.
437
9526cb043cbc list obsolete & removed classes separately
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
   145
9925
99f229869094 class definition
Claus Gittinger <cg@exept.de>
parents: 9924
diff changeset
   146
    infoLabel := Label in:self.
99f229869094 class definition
Claus Gittinger <cg@exept.de>
parents: 9924
diff changeset
   147
    infoLabel geometryLayout:(LayoutFrame 
99f229869094 class definition
Claus Gittinger <cg@exept.de>
parents: 9924
diff changeset
   148
                                leftFraction:0 offset:0
99f229869094 class definition
Claus Gittinger <cg@exept.de>
parents: 9924
diff changeset
   149
                                rightFraction:1.0 offset:0
99f229869094 class definition
Claus Gittinger <cg@exept.de>
parents: 9924
diff changeset
   150
                                topFraction:1.0 offset:infoLabel preferredHeight negated
99f229869094 class definition
Claus Gittinger <cg@exept.de>
parents: 9924
diff changeset
   151
                                bottomFraction:1.0 offset:0).
99f229869094 class definition
Claus Gittinger <cg@exept.de>
parents: 9924
diff changeset
   152
    infoLabel borderWidth:0.
99f229869094 class definition
Claus Gittinger <cg@exept.de>
parents: 9924
diff changeset
   153
    infoLabel label:''.
99f229869094 class definition
Claus Gittinger <cg@exept.de>
parents: 9924
diff changeset
   154
    infoLabel adjust:#left.
99f229869094 class definition
Claus Gittinger <cg@exept.de>
parents: 9924
diff changeset
   155
    infoLabel level:-1.
99f229869094 class definition
Claus Gittinger <cg@exept.de>
parents: 9924
diff changeset
   156
437
9526cb043cbc list obsolete & removed classes separately
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
   157
    helpView := ScrollableView for:SelectionInListView in:self.
9925
99f229869094 class definition
Claus Gittinger <cg@exept.de>
parents: 9924
diff changeset
   158
    helpView geometryLayout:(LayoutFrame 
99f229869094 class definition
Claus Gittinger <cg@exept.de>
parents: 9924
diff changeset
   159
                                leftFraction:0 offset:0
99f229869094 class definition
Claus Gittinger <cg@exept.de>
parents: 9924
diff changeset
   160
                                rightFraction:1.0 offset:0
99f229869094 class definition
Claus Gittinger <cg@exept.de>
parents: 9924
diff changeset
   161
                                topFraction:0 offset:titleLabel height
99f229869094 class definition
Claus Gittinger <cg@exept.de>
parents: 9924
diff changeset
   162
                                bottomFraction:1.0 offset:infoLabel height negated).
92
claus
parents: 69
diff changeset
   163
437
9526cb043cbc list obsolete & removed classes separately
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
   164
    list := helpView scrolledView.
9526cb043cbc list obsolete & removed classes separately
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
   165
1348
f958dbefe269 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1273
diff changeset
   166
    titleLabel origin:(list originRelativeTo:self) x @ 0.0.
92
claus
parents: 69
diff changeset
   167
1273
3a8a91e6c5fa give my listView a fixed font.
Claus Gittinger <cg@exept.de>
parents: 1053
diff changeset
   168
    list font:(EditTextView defaultFont).
1348
f958dbefe269 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1273
diff changeset
   169
    titleLabel font:(EditTextView defaultFont).
437
9526cb043cbc list obsolete & removed classes separately
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
   170
    list menuHolder:self; menuPerformer:self; menuMessage:#usageMenu.
92
claus
parents: 69
diff changeset
   171
16252
5a1658cb9344 class: Image
Claus Gittinger <cg@exept.de>
parents: 15942
diff changeset
   172
    self extent:((list font widthOf:headLine) + ( device horizontalPixelPerMillimeter * 15) rounded) @ self height.
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   173
437
9526cb043cbc list obsolete & removed classes separately
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
   174
    "
9526cb043cbc list obsolete & removed classes separately
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
   175
     MemoryUsageView open
9526cb043cbc list obsolete & removed classes separately
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
   176
    "
1273
3a8a91e6c5fa give my listView a fixed font.
Claus Gittinger <cg@exept.de>
parents: 1053
diff changeset
   177
9925
99f229869094 class definition
Claus Gittinger <cg@exept.de>
parents: 9924
diff changeset
   178
    "Modified: / 08-05-2011 / 12:45:06 / cg"
14921
eb71540a0256 Fix in MemoryUsageView - user self device instead of diretly accessing instvar,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14692
diff changeset
   179
    "Modified: / 26-11-2014 / 16:00:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   180
!
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   181
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   182
release
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   183
    self stopAutoUpdateProcess.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   184
    super release.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   185
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   186
    "Created: / 05-05-2011 / 17:26:24 / cg"
437
9526cb043cbc list obsolete & removed classes separately
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
   187
! !
9526cb043cbc list obsolete & removed classes separately
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
   188
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   189
!MemoryUsageView methodsFor:'menu-actions'!
19
4cde336c0794 Initial revision
claus
parents:
diff changeset
   190
9387
c5f99e84ed65 added: #browseClass
Claus Gittinger <cg@exept.de>
parents: 9340
diff changeset
   191
browseClass
c5f99e84ed65 added: #browseClass
Claus Gittinger <cg@exept.de>
parents: 9340
diff changeset
   192
    |class|
c5f99e84ed65 added: #browseClass
Claus Gittinger <cg@exept.de>
parents: 9340
diff changeset
   193
15778
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   194
    (class := self selectedClass) isNil ifTrue:[ ^ self ].
15942
46c3614aedaa #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 15778
diff changeset
   195
    class browserClass openInClass:class.
9930
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   196
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   197
    "Modified: / 11-05-2011 / 14:34:38 / cg"
9387
c5f99e84ed65 added: #browseClass
Claus Gittinger <cg@exept.de>
parents: 9340
diff changeset
   198
!
c5f99e84ed65 added: #browseClass
Claus Gittinger <cg@exept.de>
parents: 9340
diff changeset
   199
1348
f958dbefe269 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1273
diff changeset
   200
collectGarbageAndUpdate
f958dbefe269 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1273
diff changeset
   201
    self withWaitCursorDo:[
1387
355fc1057e11 better print of java objects
Claus Gittinger <cg@exept.de>
parents: 1348
diff changeset
   202
	ObjectMemory tenure.
355fc1057e11 better print of java objects
Claus Gittinger <cg@exept.de>
parents: 1348
diff changeset
   203
	ObjectMemory compressingGarbageCollect.
1348
f958dbefe269 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1273
diff changeset
   204
    ].
f958dbefe269 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1273
diff changeset
   205
    self update.
f958dbefe269 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1273
diff changeset
   206
f958dbefe269 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1273
diff changeset
   207
    "Created: 14.10.1997 / 21:36:38 / cg"
f958dbefe269 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1273
diff changeset
   208
    "Modified: 14.10.1997 / 21:41:11 / cg"
f958dbefe269 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1273
diff changeset
   209
!
f958dbefe269 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1273
diff changeset
   210
1450
c37c7568be8f ref chain
Claus Gittinger <cg@exept.de>
parents: 1387
diff changeset
   211
displayGlobalRefChainsToInsts
c37c7568be8f ref chain
Claus Gittinger <cg@exept.de>
parents: 1387
diff changeset
   212
    |class|
c37c7568be8f ref chain
Claus Gittinger <cg@exept.de>
parents: 1387
diff changeset
   213
15778
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   214
    (class := self selectedClassOrClassSymbol) isNil ifTrue:[ ^ self ].
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   215
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   216
    self withCursor:(Cursor questionMark) do:[
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   217
        |insts numInsts limit answer tooMany|
1450
c37c7568be8f ref chain
Claus Gittinger <cg@exept.de>
parents: 1387
diff changeset
   218
15778
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   219
        "
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   220
         special kludge
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   221
        "
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   222
        class isSymbol ifTrue:[
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   223
            class == #NameSpace ifFalse:[
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   224
                self information:'classes are directly refered to by Smalltalk'.
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   225
                ^ self.
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   226
            ].
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   227
            class := (Smalltalk at:class) class.
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   228
            insts := class allSubInstances.
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   229
            insts remove:class soleInstance ifAbsent:nil
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   230
        ] ifFalse:[
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   231
            tooMany := false.
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   232
            Error handle:[:ex |
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   233
                tooMany := true.
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   234
            ] do:[
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   235
                insts := class allInstances.
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   236
                numInsts := insts size
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   237
            ].
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   238
            tooMany ifTrue:[
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   239
                numInsts := class instanceCount.
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   240
            ].
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   241
        ].
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   242
        numInsts > 10 ifTrue:[
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   243
            answer := Dialog 
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   244
                request:('There are ' , numInsts printString , ' instances.\Do you really want to follow them all ?\\(Give number to follow or cancel)' withCRs)
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   245
                initialAnswer:(numInsts min:10) printString.
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   246
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   247
            limit := Integer readFrom:answer onError:nil.
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   248
            limit isNil ifTrue:[^ self].
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   249
            insts isNil ifTrue:[
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   250
                [:exit |
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   251
                    insts := OrderedCollection new.
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   252
                    class allInstancesDo:[:inst |
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   253
                        insts add:inst.
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   254
                        insts size == limit ifTrue:[ exit value:nil ].
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   255
                    ]
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   256
                ] valueWithExit.
1450
c37c7568be8f ref chain
Claus Gittinger <cg@exept.de>
parents: 1387
diff changeset
   257
            ] ifFalse:[
15778
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   258
                insts := (insts asArray copyTo:limit)
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   259
            ]
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   260
        ].
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   261
        insts := insts asArray.
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   262
        ObjectMemory displayRefChainToAny:insts limitNumberOfSearchedReferences:(limit ? 1000).
1450
c37c7568be8f ref chain
Claus Gittinger <cg@exept.de>
parents: 1387
diff changeset
   263
    ]
c37c7568be8f ref chain
Claus Gittinger <cg@exept.de>
parents: 1387
diff changeset
   264
9930
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   265
    "Created: / 03-02-1998 / 00:03:22 / cg"
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   266
    "Modified: / 11-05-2011 / 14:33:04 / cg"
9936
1090966171a4 changed:
az
parents: 9931
diff changeset
   267
    "Modified: / 16-06-2011 / 16:14:40 / az"
1450
c37c7568be8f ref chain
Claus Gittinger <cg@exept.de>
parents: 1387
diff changeset
   268
!
c37c7568be8f ref chain
Claus Gittinger <cg@exept.de>
parents: 1387
diff changeset
   269
45
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
   270
inspectInstances
9930
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   271
    self withCursor:(Cursor questionMark) do:[
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   272
        self withInstancesOfSelectedClassDo:[:insts |
9936
1090966171a4 changed:
az
parents: 9931
diff changeset
   273
            |answer|
1090966171a4 changed:
az
parents: 9931
diff changeset
   274
1090966171a4 changed:
az
parents: 9931
diff changeset
   275
            answer := true.
2697
b4f4e431b71e browserClass from preferences
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
   276
            insts size > 500 ifTrue:[
9936
1090966171a4 changed:
az
parents: 9931
diff changeset
   277
                answer := OptionBox
1090966171a4 changed:
az
parents: 9931
diff changeset
   278
                            request:('there are ' , insts size printString , ' instances.\\Do you really want to see them all ?' withCRs)
15379
cc72f4a8a6bc class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15318
diff changeset
   279
                            buttonLabels:#('No' 'Show me any 500' 'Yes' )
cc72f4a8a6bc class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15318
diff changeset
   280
                            values:#( false #some true )
9936
1090966171a4 changed:
az
parents: 9931
diff changeset
   281
                            default:true.
2697
b4f4e431b71e browserClass from preferences
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
   282
            ].
9936
1090966171a4 changed:
az
parents: 9931
diff changeset
   283
            answer ~~ false ifTrue:[
1090966171a4 changed:
az
parents: 9931
diff changeset
   284
                answer == #some ifTrue:[
1090966171a4 changed:
az
parents: 9931
diff changeset
   285
                    (insts copyTo:500) inspect.
1090966171a4 changed:
az
parents: 9931
diff changeset
   286
                ] ifFalse:[
1090966171a4 changed:
az
parents: 9931
diff changeset
   287
                    insts inspect
1090966171a4 changed:
az
parents: 9931
diff changeset
   288
                ]
1090966171a4 changed:
az
parents: 9931
diff changeset
   289
            ].
2697
b4f4e431b71e browserClass from preferences
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
   290
        ]
52
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
   291
    ]
770
3da310ebef8d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 769
diff changeset
   292
9930
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   293
    "Modified: / 11-05-2011 / 14:36:44 / cg"
9936
1090966171a4 changed:
az
parents: 9931
diff changeset
   294
    "Modified: / 16-06-2011 / 15:57:52 / az"
52
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
   295
!
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
   296
1738
01676800aa71 added search-with filter
Claus Gittinger <cg@exept.de>
parents: 1728
diff changeset
   297
inspectInstancesWithSearch
9930
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   298
    |filterString filterBlock|
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   299
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   300
    list selection isNil ifTrue:[^ self].
1738
01676800aa71 added search-with filter
Claus Gittinger <cg@exept.de>
parents: 1728
diff changeset
   301
9929
203ae73fb176 class definition
Claus Gittinger <cg@exept.de>
parents: 9925
diff changeset
   302
    filterString := LastSearchString ? '[:inst | "<some condition for inst>" ]'.
1738
01676800aa71 added search-with filter
Claus Gittinger <cg@exept.de>
parents: 1728
diff changeset
   303
    [filterBlock isNil] whileTrue:[
9929
203ae73fb176 class definition
Claus Gittinger <cg@exept.de>
parents: 9925
diff changeset
   304
        filterString := Dialog request:'filter block:' initialAnswer:filterString.
203ae73fb176 class definition
Claus Gittinger <cg@exept.de>
parents: 9925
diff changeset
   305
        filterString size == 0 ifTrue:[^ self].
1738
01676800aa71 added search-with filter
Claus Gittinger <cg@exept.de>
parents: 1728
diff changeset
   306
9929
203ae73fb176 class definition
Claus Gittinger <cg@exept.de>
parents: 9925
diff changeset
   307
        filterBlock := Compiler evaluate:filterString.
1738
01676800aa71 added search-with filter
Claus Gittinger <cg@exept.de>
parents: 1728
diff changeset
   308
        filterBlock isBlock ifFalse:[
01676800aa71 added search-with filter
Claus Gittinger <cg@exept.de>
parents: 1728
diff changeset
   309
            self information:'bad syntax in block'.
01676800aa71 added search-with filter
Claus Gittinger <cg@exept.de>
parents: 1728
diff changeset
   310
            filterBlock := nil.
01676800aa71 added search-with filter
Claus Gittinger <cg@exept.de>
parents: 1728
diff changeset
   311
        ].
01676800aa71 added search-with filter
Claus Gittinger <cg@exept.de>
parents: 1728
diff changeset
   312
    ].
01676800aa71 added search-with filter
Claus Gittinger <cg@exept.de>
parents: 1728
diff changeset
   313
9929
203ae73fb176 class definition
Claus Gittinger <cg@exept.de>
parents: 9925
diff changeset
   314
    LastSearchString := filterString.
203ae73fb176 class definition
Claus Gittinger <cg@exept.de>
parents: 9925
diff changeset
   315
9930
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   316
    self withCursor:(Cursor questionMark) do:[
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   317
        self withInstancesOfSelectedClassDo:[:insts |
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   318
            |filteredInsts|
1738
01676800aa71 added search-with filter
Claus Gittinger <cg@exept.de>
parents: 1728
diff changeset
   319
9930
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   320
            filteredInsts := insts select:filterBlock.
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   321
            filteredInsts size > 500 ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   322
                (self confirm:'there are ' , filteredInsts size printString , ' instances.\\Do you really want to see them all ?' withCRs)
1738
01676800aa71 added search-with filter
Claus Gittinger <cg@exept.de>
parents: 1728
diff changeset
   323
                ifFalse:[^ self]
01676800aa71 added search-with filter
Claus Gittinger <cg@exept.de>
parents: 1728
diff changeset
   324
            ].
9930
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   325
            filteredInsts inspect
1738
01676800aa71 added search-with filter
Claus Gittinger <cg@exept.de>
parents: 1728
diff changeset
   326
        ]
01676800aa71 added search-with filter
Claus Gittinger <cg@exept.de>
parents: 1728
diff changeset
   327
    ]
01676800aa71 added search-with filter
Claus Gittinger <cg@exept.de>
parents: 1728
diff changeset
   328
9930
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   329
    "Modified: / 11-05-2011 / 14:38:12 / cg"
1738
01676800aa71 added search-with filter
Claus Gittinger <cg@exept.de>
parents: 1728
diff changeset
   330
!
01676800aa71 added search-with filter
Claus Gittinger <cg@exept.de>
parents: 1728
diff changeset
   331
12030
Claus Gittinger <cg@exept.de>
parents: 9936
diff changeset
   332
inspectLargestInstances
Claus Gittinger <cg@exept.de>
parents: 9936
diff changeset
   333
    |tenBiggest smallestOfThe10|
Claus Gittinger <cg@exept.de>
parents: 9936
diff changeset
   334
Claus Gittinger <cg@exept.de>
parents: 9936
diff changeset
   335
    tenBiggest := SortedCollection new:20.
Claus Gittinger <cg@exept.de>
parents: 9936
diff changeset
   336
    tenBiggest sortBlock:[:a :b | a size > b size].
Claus Gittinger <cg@exept.de>
parents: 9936
diff changeset
   337
    smallestOfThe10 := nil.
Claus Gittinger <cg@exept.de>
parents: 9936
diff changeset
   338
Claus Gittinger <cg@exept.de>
parents: 9936
diff changeset
   339
    self withCursor:(Cursor questionMark) do:[
Claus Gittinger <cg@exept.de>
parents: 9936
diff changeset
   340
        self withInstancesOfSelectedClassDo:[:insts |
Claus Gittinger <cg@exept.de>
parents: 9936
diff changeset
   341
            insts do:[:each |
Claus Gittinger <cg@exept.de>
parents: 9936
diff changeset
   342
                smallestOfThe10 isNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 9936
diff changeset
   343
                    smallestOfThe10 := each size.
Claus Gittinger <cg@exept.de>
parents: 9936
diff changeset
   344
                    tenBiggest add:each.
Claus Gittinger <cg@exept.de>
parents: 9936
diff changeset
   345
                ] ifFalse:[
Claus Gittinger <cg@exept.de>
parents: 9936
diff changeset
   346
                    each basicSize > smallestOfThe10 ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 9936
diff changeset
   347
                        tenBiggest add:each.
Claus Gittinger <cg@exept.de>
parents: 9936
diff changeset
   348
                        tenBiggest size > 10 ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 9936
diff changeset
   349
                            tenBiggest removeLast.
Claus Gittinger <cg@exept.de>
parents: 9936
diff changeset
   350
                            smallestOfThe10 := tenBiggest last size.
Claus Gittinger <cg@exept.de>
parents: 9936
diff changeset
   351
                        ]
Claus Gittinger <cg@exept.de>
parents: 9936
diff changeset
   352
                    ]
Claus Gittinger <cg@exept.de>
parents: 9936
diff changeset
   353
                ].
Claus Gittinger <cg@exept.de>
parents: 9936
diff changeset
   354
            ].
Claus Gittinger <cg@exept.de>
parents: 9936
diff changeset
   355
            tenBiggest inspect
Claus Gittinger <cg@exept.de>
parents: 9936
diff changeset
   356
        ]
Claus Gittinger <cg@exept.de>
parents: 9936
diff changeset
   357
    ]
Claus Gittinger <cg@exept.de>
parents: 9936
diff changeset
   358
Claus Gittinger <cg@exept.de>
parents: 9936
diff changeset
   359
    "Modified: / 11-05-2011 / 14:36:44 / cg"
Claus Gittinger <cg@exept.de>
parents: 9936
diff changeset
   360
    "Modified: / 16-06-2011 / 15:57:52 / az"
Claus Gittinger <cg@exept.de>
parents: 9936
diff changeset
   361
!
Claus Gittinger <cg@exept.de>
parents: 9936
diff changeset
   362
52
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
   363
inspectOwners
69
0d6acfdae045 *** empty log message ***
claus
parents: 57
diff changeset
   364
    |class inspector|
52
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
   365
15778
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   366
    (class := self selectedClass) isNil ifTrue:[ ^ self ].
9930
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   367
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   368
    self withCursor:(Cursor questionMark) do:[
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   369
        |owners dict|
52
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
   370
9930
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   371
        owners := (ObjectMemory whoReferencesInstancesOf:class).
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   372
        owners isEmptyOrNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   373
            self information:'No owners found - next GC should remove it'.
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   374
            ^ self
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   375
        ].
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   376
        owners := owners asOrderedCollection.
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   377
        owners size > 500 ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   378
            (self confirm:'there are ' , owners size printString , ' owners.\\Do you really want to see them all ?' withCRs)
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   379
            ifFalse:[^ self]
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   380
        ].
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   381
        dict := IdentityDictionary new.
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   382
        owners do:[:owner |
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   383
            |set names oClass s nMore|
52
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
   384
9930
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   385
            "
17033
4846dd7bafcd #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 16880
diff changeset
   386
             skip weakArrays ... (they don't count)
9930
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   387
            "
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   388
            (owner isMemberOf:WeakArray) ifFalse:[
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   389
                nMore := nil.    
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   390
                set := Set new.
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   391
                owner == Smalltalk ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   392
                    owner keysAndValuesDo:[:key :val |
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   393
                        (val isMemberOf:class) ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   394
                            set add:key
7918
cb3b0c5eae80 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7860
diff changeset
   395
                        ]
9930
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   396
                    ]
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   397
                ] ifFalse:[
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   398
                    names := owner class allInstVarNames.
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   399
                    oClass := owner class.
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   400
                    1 to:oClass instSize do:[:i |
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   401
                        ((owner instVarAt:i) isMemberOf:class) ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   402
                            set add:(names at:i).
7918
cb3b0c5eae80 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7860
diff changeset
   403
                        ].
9930
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   404
                    ].
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   405
                    oClass isVariable ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   406
                        oClass isPointers ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   407
                            1 to:owner basicSize do:[:i |
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   408
                                ((owner basicAt:i) isMemberOf:class) ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   409
                                    nMore isNil ifTrue:[    
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   410
                                        set add:i.
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   411
                                        set size > 500 ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   412
                                            nMore := 0.
7950
c6d71d9c01e3 changed #fieldMenu
Claus Gittinger <cg@exept.de>
parents: 7918
diff changeset
   413
                                        ]
9930
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   414
                                    ] ifFalse:[
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   415
                                        nMore := nMore + 1.
7918
cb3b0c5eae80 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7860
diff changeset
   416
                                    ]
cb3b0c5eae80 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7860
diff changeset
   417
                                ]
cb3b0c5eae80 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7860
diff changeset
   418
                            ]
9930
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   419
                        ]
7918
cb3b0c5eae80 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7860
diff changeset
   420
                    ].
9930
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   421
                ].
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   422
                "
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   423
                 put a describing string into the dictionary
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   424
                "
16880
115164a8db8f #OTHER by stefan
Stefan Vogel <sv@exept.de>
parents: 16516
diff changeset
   425
                s := WriteStream on:''.    
9930
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   426
                s nextPutAll:'references in: '.
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   427
                set do:[:name | 
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   428
                     name isString ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   429
                         s nextPutAll:name; nextPutAll:' '
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   430
                     ] ifFalse:[
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   431
                         s nextPutAll:'[';  nextPutAll:name printString;  nextPutAll:'] '
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   432
                     ]
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   433
                ].
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   434
                nMore notNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   435
                    s nextPutAll:'... (', nMore printString,' more)'
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   436
                ].
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   437
                dict at:owner put:(s contents).
57
36e13831b62d *** empty log message ***
claus
parents: 52
diff changeset
   438
"/                            dict at:owner put:set
9930
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   439
            ]
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   440
        ].
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   441
        inspector := DictionaryInspectorView openOn:dict.
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   442
        inspector listView doubleClickAction:[:lineNr | inspector doInspectKey].
45
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
   443
    ]
770
3da310ebef8d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 769
diff changeset
   444
9930
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   445
    "Modified: / 11-05-2011 / 14:39:30 / cg"
45
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
   446
!
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
   447
2858
f73dd00b5da4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2855
diff changeset
   448
nilInstances
f73dd00b5da4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2855
diff changeset
   449
    |class|
f73dd00b5da4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2855
diff changeset
   450
15778
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   451
    (class := self selectedClass) isNil ifTrue:[ ^ self ].
2858
f73dd00b5da4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2855
diff changeset
   452
9930
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   453
    self withCursor:(Cursor questionMark) do:[
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   454
        |insts|
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   455
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   456
        insts := class allInstances.
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   457
        insts notEmpty ifTrue:[    
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   458
            (self confirm:'there are ' , insts size printString , ' instances.\\Do you really want to nil them all ?' withCRs)
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   459
            ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   460
                insts do:[:each |
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   461
                    each becomeNil
2858
f73dd00b5da4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2855
diff changeset
   462
                ]
9930
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   463
            ]
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   464
        ].
2858
f73dd00b5da4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2855
diff changeset
   465
    ]
f73dd00b5da4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2855
diff changeset
   466
9930
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   467
    "Modified: / 11-05-2011 / 14:39:33 / cg"
2858
f73dd00b5da4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2855
diff changeset
   468
!
f73dd00b5da4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2855
diff changeset
   469
13346
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   470
openInheritanceFilterDialog
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   471
    "only show instances which inherit from a set of classes"
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   472
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   473
    |names classes classToCheck|
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   474
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   475
    names := Dialog requestClassName:'Filter Instances by Inheritance:' initialAnswer:''.
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   476
    names isEmptyOrNil ifTrue:[^ self].
9924
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   477
13346
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   478
    classes := (names asCollectionOfSubstringsSeparatedByAny:' ;,')
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   479
                collect:[:each | Smalltalk classNamed:each ]
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   480
                thenSelect:[:cls |cls notNil].
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   481
    classes isEmpty ifTrue:[^ self].
9924
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   482
13346
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   483
    classes size == 1 ifTrue:[
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   484
        classToCheck := classes first.
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   485
        filter := [:inst :class | class includesBehavior:classToCheck ].
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   486
    ] ifFalse:[
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   487
        classes := classes asArray.
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   488
        filter := [:inst :class | classes contains:[:cls | class includesBehavior:cls]].
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   489
    ].
9924
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   490
    prevRawInfo := nil.
9925
99f229869094 class definition
Claus Gittinger <cg@exept.de>
parents: 9924
diff changeset
   491
    self update.
99f229869094 class definition
Claus Gittinger <cg@exept.de>
parents: 9924
diff changeset
   492
13346
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   493
    infoLabel label:'Filtered by Inheritance: ',names.
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   494
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   495
    "Created: / 08-05-2011 / 12:18:21 / cg"
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   496
!
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   497
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   498
openNamespaceFilterDialog
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   499
    "only show instances for classes from a number of namespaces"
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   500
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   501
    |names nameSpaces ns|
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   502
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   503
    names := Dialog requestNameSpace:'Filter Instances by Namespace:' initialAnswer:''.
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   504
    names isEmptyOrNil ifTrue:[^ self].
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   505
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   506
    nameSpaces := (names asCollectionOfSubstringsSeparatedByAny:' ;,')
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   507
                collect:[:each | Smalltalk classNamed:each ]
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   508
                thenSelect:[:cls | cls notNil].
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   509
    nameSpaces isEmpty ifTrue:[^ self].
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   510
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   511
    nameSpaces size == 1 ifTrue:[
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   512
        ns := nameSpaces first.
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   513
        filter := [:inst :class | class topNameSpace == ns ].
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   514
    ] ifFalse:[
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   515
        nameSpaces := nameSpaces asArray.
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   516
        filter := [:inst :class | nameSpaces includesIdentical:(class topNameSpace) ].
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   517
    ].
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   518
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   519
    prevRawInfo := nil.
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   520
    self update.
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   521
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   522
    infoLabel label:'Filtered by Namespace: ',names.
9924
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   523
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   524
    "Created: / 08-05-2011 / 12:18:21 / cg"
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   525
!
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   526
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   527
removeFilter
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   528
    filter := nil.
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   529
    prevRawInfo := nil.
9925
99f229869094 class definition
Claus Gittinger <cg@exept.de>
parents: 9924
diff changeset
   530
    self update.
99f229869094 class definition
Claus Gittinger <cg@exept.de>
parents: 9924
diff changeset
   531
99f229869094 class definition
Claus Gittinger <cg@exept.de>
parents: 9924
diff changeset
   532
    infoLabel label:'No Filter.'.
9924
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   533
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   534
    "Created: / 08-05-2011 / 12:16:43 / cg"
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   535
!
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   536
15778
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   537
showSizeHistogram
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   538
    |class|
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   539
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   540
    (class := self selectedClass) isNil ifTrue:[ ^ self ].
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   541
    self showSizeHistogrammForClass:class
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   542
!
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   543
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   544
showSizeHistogrammForClass:class
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   545
    |sizeBag minSize maxSize numBags|
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   546
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   547
    numBags := 20.
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   548
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   549
    sizeBag := Bag new.
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   550
    class allInstancesDo:[:i |
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   551
        |sz|
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   552
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   553
        sz := i size.
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   554
        sizeBag add:sz.
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   555
        minSize := (minSize ? sz) min:sz.
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   556
        maxSize := (maxSize ? sz) max:sz.
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   557
    ].
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   558
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   559
    sizeBag isEmpty ifTrue:[
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   560
        Dialog warn:'No instances'.
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   561
        ^ self.
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   562
    ].  
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   563
    sizeBag inspect.
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   564
!
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   565
19
4cde336c0794 Initial revision
claus
parents:
diff changeset
   566
update
4cde336c0794 Initial revision
claus
parents:
diff changeset
   567
    self updateInfo.
4cde336c0794 Initial revision
claus
parents:
diff changeset
   568
    self updateDisplay
92
claus
parents: 69
diff changeset
   569
!
45
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
   570
437
9526cb043cbc list obsolete & removed classes separately
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
   571
usageMenu
1619
6e4b1930841a use new itemList message from PopUpMenu
Claus Gittinger <cg@exept.de>
parents: 1617
diff changeset
   572
    <resource: #programMenu>
6e4b1930841a use new itemList message from PopUpMenu
Claus Gittinger <cg@exept.de>
parents: 1617
diff changeset
   573
1348
f958dbefe269 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1273
diff changeset
   574
    |m|
f958dbefe269 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1273
diff changeset
   575
f958dbefe269 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1273
diff changeset
   576
    m := PopUpMenu
1617
2403cee7dc5a use new itemList message from PopUpMenu
Claus Gittinger <cg@exept.de>
parents: 1513
diff changeset
   577
                itemList:#(
9924
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   578
                     ('Filter by Namespace...'          openNamespaceFilterDialog               )
13346
217a077aa3c7 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13021
diff changeset
   579
                     ('Filter by Inheritance...'        openInheritanceFilterDialog               )
9924
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   580
                     ('No Filter'                       removeFilter                            )
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   581
                     ('-')
4253
fb44beaa9aa1 menu labels
Claus Gittinger <cg@exept.de>
parents: 2987
diff changeset
   582
                     ('Sort by Class Name'              sortByClass                             )
fb44beaa9aa1 menu labels
Claus Gittinger <cg@exept.de>
parents: 2987
diff changeset
   583
                     ('Sort by Classes Basename'        sortByClassNameWithoutPrefix            )
fb44beaa9aa1 menu labels
Claus Gittinger <cg@exept.de>
parents: 2987
diff changeset
   584
                     ('Sort by Inst Count'              sortByInstCount                         )
fb44beaa9aa1 menu labels
Claus Gittinger <cg@exept.de>
parents: 2987
diff changeset
   585
                     ('Sort by Memory Usage'            sortByMemoryUsage                       )
fb44beaa9aa1 menu labels
Claus Gittinger <cg@exept.de>
parents: 2987
diff changeset
   586
                     ('Sort by Average Size'            sortByAverageSize                       )
fb44beaa9aa1 menu labels
Claus Gittinger <cg@exept.de>
parents: 2987
diff changeset
   587
                     ('Sort by Maximum Size'            sortByMaxSize                           )
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   588
                     ('Sort by Inst Allocation Rate'    sortByInstanceAllocationRate            )
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   589
                     ('Sort by Byte Allocation Rate'    sortByMemoryAllocationRate              )
1617
2403cee7dc5a use new itemList message from PopUpMenu
Claus Gittinger <cg@exept.de>
parents: 1513
diff changeset
   590
                     ('-')
4253
fb44beaa9aa1 menu labels
Claus Gittinger <cg@exept.de>
parents: 2987
diff changeset
   591
                     ('Inspect Instances'               inspectInstances                        )
12030
Claus Gittinger <cg@exept.de>
parents: 9936
diff changeset
   592
                     ('Inspect Largest Instances'       inspectLargestInstances                        )
4253
fb44beaa9aa1 menu labels
Claus Gittinger <cg@exept.de>
parents: 2987
diff changeset
   593
                     ('Inspect with Search'             inspectInstancesWithSearch              )
fb44beaa9aa1 menu labels
Claus Gittinger <cg@exept.de>
parents: 2987
diff changeset
   594
                     ('Inspect Owners'                  inspectOwners                           )
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   595
                     ('-')
4253
fb44beaa9aa1 menu labels
Claus Gittinger <cg@exept.de>
parents: 2987
diff changeset
   596
                     ('Ref Chains'                      displayGlobalRefChainsToInsts           )
fb44beaa9aa1 menu labels
Claus Gittinger <cg@exept.de>
parents: 2987
diff changeset
   597
                     ('Clear (nil) Instances'           nilInstances                            )
1617
2403cee7dc5a use new itemList message from PopUpMenu
Claus Gittinger <cg@exept.de>
parents: 1513
diff changeset
   598
                     ('-')
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   599
                     ('Browse Class'                    browseClass                             )
15778
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   600
                     ('Size Histogram'                  showSizeHistogram                             )
9387
c5f99e84ed65 added: #browseClass
Claus Gittinger <cg@exept.de>
parents: 9340
diff changeset
   601
                     ('-')
9924
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   602
                     ('Collect Garbage & Update'        collectGarbageAndUpdate                 )
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   603
                     ('Start Autoupdate'                startAutoUpdateProcess                  )
9924
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   604
                     ('Autoupdate Interval...'          openAutoUpdateIntervalDialog            )
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   605
                     ('Update'                          update                                  )
1617
2403cee7dc5a use new itemList message from PopUpMenu
Claus Gittinger <cg@exept.de>
parents: 1513
diff changeset
   606
                 )
2403cee7dc5a use new itemList message from PopUpMenu
Claus Gittinger <cg@exept.de>
parents: 1513
diff changeset
   607
                resources:resources.
437
9526cb043cbc list obsolete & removed classes separately
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
   608
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   609
    (list hasSelection not or:[list selection < 3]) ifTrue:[
1741
5c14377b861d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1738
diff changeset
   610
        m disableAll:#(inspectInstances inspectInstancesWithSearch
5c14377b861d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1738
diff changeset
   611
                       inspectOwners 
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   612
                       displayGlobalRefChainsToInsts
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   613
                       nilInstances browseClass).
1348
f958dbefe269 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1273
diff changeset
   614
    ].
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   615
    autoUpdateProcess notNil ifTrue:[
9925
99f229869094 class definition
Claus Gittinger <cg@exept.de>
parents: 9924
diff changeset
   616
        m labelAt:#startAutoUpdateProcess put:'Stop Autoupdate'.
99f229869094 class definition
Claus Gittinger <cg@exept.de>
parents: 9924
diff changeset
   617
        m selectorAt:#startAutoUpdateProcess put:#stopAutoUpdateProcess
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   618
    ].
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   619
9924
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   620
    filter isNil ifTrue:[
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   621
        m disableAll:#(removeFilter)
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   622
    ].
1348
f958dbefe269 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1273
diff changeset
   623
    ^ m
437
9526cb043cbc list obsolete & removed classes separately
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
   624
9925
99f229869094 class definition
Claus Gittinger <cg@exept.de>
parents: 9924
diff changeset
   625
    "Modified: / 08-05-2011 / 12:38:47 / cg"
9930
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   626
!
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   627
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   628
withInstancesOfSelectedClassDo:aBlock
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   629
    |class insts|
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   630
15778
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   631
    (class := self selectedClassOrClassSymbol) isNil ifTrue:[ ^ self ].
9930
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   632
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   633
    "
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   634
     special kludge
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   635
    "
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   636
    class isSymbol ifTrue:[
9931
fe535606118f changed:
Claus Gittinger <cg@exept.de>
parents: 9930
diff changeset
   637
        class == #NameSpace ifTrue:[
fe535606118f changed:
Claus Gittinger <cg@exept.de>
parents: 9930
diff changeset
   638
            class := (Smalltalk at:class) class.
fe535606118f changed:
Claus Gittinger <cg@exept.de>
parents: 9930
diff changeset
   639
            insts := class allSubInstances.
fe535606118f changed:
Claus Gittinger <cg@exept.de>
parents: 9930
diff changeset
   640
            insts remove:class soleInstance ifAbsent:nil
fe535606118f changed:
Claus Gittinger <cg@exept.de>
parents: 9930
diff changeset
   641
        ] ifFalse:[
fe535606118f changed:
Claus Gittinger <cg@exept.de>
parents: 9930
diff changeset
   642
            class == #Metaclass ifTrue:[
fe535606118f changed:
Claus Gittinger <cg@exept.de>
parents: 9930
diff changeset
   643
                insts := Metaclass allSubInstances.
fe535606118f changed:
Claus Gittinger <cg@exept.de>
parents: 9930
diff changeset
   644
            ] ifFalse:[
fe535606118f changed:
Claus Gittinger <cg@exept.de>
parents: 9930
diff changeset
   645
                class == #Class ifTrue:[
fe535606118f changed:
Claus Gittinger <cg@exept.de>
parents: 9930
diff changeset
   646
                    insts := Class allSubInstances.
fe535606118f changed:
Claus Gittinger <cg@exept.de>
parents: 9930
diff changeset
   647
                ] ifFalse:[
fe535606118f changed:
Claus Gittinger <cg@exept.de>
parents: 9930
diff changeset
   648
                    ^ self.
fe535606118f changed:
Claus Gittinger <cg@exept.de>
parents: 9930
diff changeset
   649
                ].
fe535606118f changed:
Claus Gittinger <cg@exept.de>
parents: 9930
diff changeset
   650
            ]
9930
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   651
        ].
15742
265bf8c878a0 class: MemoryUsageView
Stefan Vogel <sv@exept.de>
parents: 15379
diff changeset
   652
        aBlock value:insts
9930
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   653
    ] ifFalse:[
15755
40b960b5c279 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15742
diff changeset
   654
        aBlock value:(class allInstances).
9930
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   655
    ].
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   656
Claus Gittinger <cg@exept.de>
parents: 9929
diff changeset
   657
    "Created: / 11-05-2011 / 14:36:00 / cg"
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   658
! !
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   659
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   660
!MemoryUsageView methodsFor:'menu-sorting'!
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   661
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   662
sortByAverageSize
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   663
    self label:'Memory usage; by average size'.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   664
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   665
    sortBlock := [:a :b | 
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   666
        |n1 n2 m1 m2|
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   667
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   668
       n1 := a averageSize.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   669
       n2 := b averageSize.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   670
       n1 > n2 
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   671
            or:[n1 == n2 
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   672
                and:[a classNameOrSymbol displayString < b classNameOrSymbol displayString]]
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   673
    ].
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   674
    self updateDisplay
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   675
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   676
    "Modified: / 05-05-2011 / 16:11:24 / cg"
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   677
!
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   678
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   679
sortByClass
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   680
    self label:'Memory usage; by class'.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   681
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   682
    sortBlock := [:a :b | 
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   683
        |c1 c2 s1 s2|
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   684
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   685
        c1 := a classNameOrSymbol.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   686
        c2 := b classNameOrSymbol.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   687
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   688
        s1 := c1 isBehavior ifTrue:[ c1 name] ifFalse:[ c1 displayString ].
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   689
        s2 := c2 isBehavior ifTrue:[ c2 name ] ifFalse:[ c2 displayString ].
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   690
        s1 < s2
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   691
    ].
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   692
    self updateDisplay
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   693
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   694
    "Modified: / 05-05-2011 / 16:11:53 / cg"
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   695
!
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   696
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   697
sortByClassNameWithoutPrefix
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   698
    self label:'Memory usage; by className without prefix'.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   699
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   700
    sortBlock := [:a :b | 
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   701
        |c1 c2 s1 s2|
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   702
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   703
        c1 := a classNameOrSymbol.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   704
        c2 := b classNameOrSymbol.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   705
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   706
        s1 := c1 isBehavior ifTrue:[ c1 nameWithoutPrefix ] ifFalse:[ c1 displayString ].
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   707
        s2 := c2 isBehavior ifTrue:[ c2 nameWithoutPrefix ] ifFalse:[ c2 displayString ].
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   708
        s1 < s2
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   709
    ].
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   710
    self updateDisplay
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   711
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   712
    "Modified: / 05-05-2011 / 16:12:10 / cg"
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   713
!
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   714
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   715
sortByInstCount
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   716
    self label:'Memory usage; by instance count'.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   717
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   718
    sortBlock := [:a :b | 
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   719
        |n1 n2|
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   720
        n1 := a instanceCount.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   721
        n2 := b instanceCount.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   722
        n1 > n2 
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   723
        or:[n1 == n2
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   724
            and:[(a classNameOrSymbol) displayString < (b classNameOrSymbol) displayString]]
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   725
    ].
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   726
    self updateDisplay
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   727
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   728
    "Modified: / 05-05-2011 / 16:47:26 / cg"
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   729
!
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   730
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   731
sortByInstanceAllocationRate
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   732
    self label:'Memory usage; by inst allocation rate'.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   733
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   734
    sortBlock := [:a :b | 
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   735
        |n1 n2 m1 m2|
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   736
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   737
       n1 := a instanceAllocationRate.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   738
       n2 := b instanceAllocationRate.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   739
       n1 > n2 
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   740
            or:[n1 == n2 
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   741
                and:[a classNameOrSymbol displayString < b classNameOrSymbol displayString]]
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   742
    ].
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   743
    self updateDisplay
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   744
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   745
    "Created: / 05-05-2011 / 16:14:56 / cg"
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   746
!
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   747
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   748
sortByMaxSize
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   749
    self label:'Memory usage; by maximum size'.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   750
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   751
    sortBlock := [:a :b | 
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   752
        |n1 n2 m1 m2|
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   753
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   754
         n1 := a maxByteSize.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   755
         n2 := b maxByteSize.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   756
         n1 > n2 
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   757
         or:[n1 == n2
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   758
             and:[(a classNameOrSymbol) displayString < (b classNameOrSymbol) displayString]]
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   759
    ].
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   760
    self updateDisplay
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   761
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   762
    "Modified: / 05-05-2011 / 16:13:20 / cg"
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   763
!
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   764
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   765
sortByMemoryAllocationRate
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   766
    self label:'Memory usage; by inst allocation rate'.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   767
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   768
    sortBlock := [:a :b | 
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   769
        |n1 n2 m1 m2|
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   770
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   771
       n1 := a memoryAllocationRate.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   772
       n2 := b memoryAllocationRate.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   773
       n1 > n2 
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   774
            or:[n1 == n2 
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   775
                and:[a classNameOrSymbol displayString < b classNameOrSymbol displayString]]
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   776
    ].
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   777
    self updateDisplay
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   778
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   779
    "Created: / 05-05-2011 / 16:15:17 / cg"
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   780
!
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   781
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   782
sortByMemoryUsage
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   783
    self label:'Memory usage; by memory usage'.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   784
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   785
    sortBlock := [:a :b | 
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   786
        |n1 n2|
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   787
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   788
        n1 := a overallByteSize.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   789
        n2 := b overallByteSize.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   790
        n1 > n2 
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   791
        or:[n1 == n2
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   792
            and:[(a classNameOrSymbol) displayString < (b classNameOrSymbol) displayString]]
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   793
    ].
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   794
    self updateDisplay
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   795
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   796
    "Modified: / 05-05-2011 / 16:13:58 / cg"
45
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
   797
! !
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
   798
19
4cde336c0794 Initial revision
claus
parents:
diff changeset
   799
!MemoryUsageView methodsFor:'private'!
4cde336c0794 Initial revision
claus
parents:
diff changeset
   800
15778
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   801
selectedClass
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   802
    |classOrSymbol|
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   803
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   804
    (classOrSymbol := self selectedClassOrClassSymbol) notNil ifTrue:[
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   805
        classOrSymbol isSymbol ifFalse:[
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   806
            ^ classOrSymbol
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   807
        ]
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   808
    ].
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   809
    ^ nil
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   810
!
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   811
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   812
selectedClassOrClassSymbol
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   813
    |selIdx|
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   814
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   815
    (selIdx := list selection) notNil ifTrue:[
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   816
        ^ (info at:selIdx) classNameOrSymbol.
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   817
    ].
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   818
    ^ nil
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   819
!
fd7b69671086 class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 15755
diff changeset
   820
45
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
   821
updateDisplay
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
   822
    "update the displayed list"
19
4cde336c0794 Initial revision
claus
parents:
diff changeset
   823
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   824
    |nameLen countLen bytesUsedSize avgSizeLen maxSizeLen accumMemoryUseLen|
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   825
12892
1215124609dc class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 12889
diff changeset
   826
    rawInfo isNil ifTrue:[^ self].
1215124609dc class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 12889
diff changeset
   827
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   828
    nameLen := 50.
15742
265bf8c878a0 class: MemoryUsageView
Stefan Vogel <sv@exept.de>
parents: 15379
diff changeset
   829
    countLen := 9.
265bf8c878a0 class: MemoryUsageView
Stefan Vogel <sv@exept.de>
parents: 15379
diff changeset
   830
    bytesUsedSize := 12.
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   831
    avgSizeLen := 10.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   832
    maxSizeLen := 8.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   833
    accumMemoryUseLen := 7.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   834
49
6fe62433cfa3 *** empty log message ***
claus
parents: 45
diff changeset
   835
    windowGroup withCursor:Cursor wait do:[
1513
3f03bc75dd28 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1450
diff changeset
   836
        |classNames counts sumSizes maxSizes percents avgSizes 
3f03bc75dd28 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1450
diff changeset
   837
         l line allMemory 
3f03bc75dd28 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1450
diff changeset
   838
         overAllCount overAllAvgSize overAllMaxSize 
3f03bc75dd28 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1450
diff changeset
   839
         lastP sumPercent|
49
6fe62433cfa3 *** empty log message ***
claus
parents: 45
diff changeset
   840
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   841
        prevRawInfo notNil ifTrue:[
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   842
            rawInfo keysAndValuesDo:[:key :entry |
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   843
                |prevEntry deltaInstCount deltaInstBytes prevInstCount prevInstBytes| 
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   844
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   845
                prevEntry := prevRawInfo at:key ifAbsent:nil.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   846
                prevInstCount :=  prevEntry notNil ifTrue:[prevEntry instanceCount] ifFalse:[0].
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   847
                prevInstBytes :=  prevEntry notNil ifTrue:[prevEntry overallByteSize] ifFalse:0.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   848
                deltaInstCount := entry instanceCount - prevInstCount.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   849
                deltaInstBytes := entry overallByteSize - prevInstBytes.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   850
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   851
                entry instanceAllocationRate:deltaInstCount.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   852
                entry memoryAllocationRate:deltaInstBytes.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   853
            ].
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   854
        ].
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   855
        
9931
fe535606118f changed:
Claus Gittinger <cg@exept.de>
parents: 9930
diff changeset
   856
        info := (OrderedCollection withAll:rawInfo) sort:sortBlock.
19
4cde336c0794 Initial revision
claus
parents:
diff changeset
   857
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   858
        sumSizes := info collect:[:infoEntry | infoEntry overallByteSize ].
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   859
        allMemory := sumSizes sum.
1513
3f03bc75dd28 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1450
diff changeset
   860
        percents := sumSizes collect:[:sz | (sz asFloat / allMemory * 100)].
3f03bc75dd28 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1450
diff changeset
   861
        sumPercent := 0.
52
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
   862
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   863
        overAllMaxSize := overAllCount := 0.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   864
1513
3f03bc75dd28 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1450
diff changeset
   865
        l := OrderedCollection new.
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   866
        info doWithIndex:[:entry :i |
12889
040a1ab8884f class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 12030
diff changeset
   867
            |line avgSz avgSzString maxSz instCount percent allocRate memRate s1 s2|
19
4cde336c0794 Initial revision
claus
parents:
diff changeset
   868
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   869
            maxSz := entry maxByteSize.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   870
            avgSz := entry averageSize asFixedPoint:1.
1513
3f03bc75dd28 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1450
diff changeset
   871
            avgSz = maxSz ifTrue:[
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   872
                avgSzString := avgSz asInteger printString , '  '.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   873
            ] ifFalse:[
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   874
                avgSzString := avgSz printString.
1513
3f03bc75dd28 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1450
diff changeset
   875
            ].
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   876
            instCount := entry instanceCount.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   877
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   878
            line := entry classNameStringInList printStringPaddedTo:nameLen.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   879
            line := line contractTo:nameLen.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   880
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   881
            line := line , (instCount printStringLeftPaddedTo:countLen).
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   882
            line := line , (entry overallByteSize printStringLeftPaddedTo:bytesUsedSize).
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   883
            line := line , (avgSzString leftPaddedTo:avgSizeLen).
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   884
            line := line , (maxSz printStringLeftPaddedTo:maxSizeLen).
1513
3f03bc75dd28 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1450
diff changeset
   885
            percent := (percents at:i).
1348
f958dbefe269 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1273
diff changeset
   886
"/ percent < 0.0 ifTrue:[self halt].
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   887
            line := line , ((percent asFixedPoint:1) printStringLeftPaddedTo:accumMemoryUseLen).
1513
3f03bc75dd28 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1450
diff changeset
   888
            lastP := sumPercent := ((sumPercent + percent) min:100.0).
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   889
            line := line , ((sumPercent asFixedPoint:1) printStringLeftPaddedTo:accumMemoryUseLen).
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   890
12889
040a1ab8884f class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 12030
diff changeset
   891
            allocRate := entry instanceAllocationRate.
040a1ab8884f class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 12030
diff changeset
   892
            memRate := entry memoryAllocationRate.
040a1ab8884f class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 12030
diff changeset
   893
            s1 := allocRate printString.
040a1ab8884f class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 12030
diff changeset
   894
            s2 := memRate printString.
040a1ab8884f class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 12030
diff changeset
   895
            allocRate > 0 ifTrue:[
16516
802f3f3d8a8b #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 16264
diff changeset
   896
                s1 := s1 withColor:#red.
802f3f3d8a8b #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 16264
diff changeset
   897
                s2 := s2 withColor:#red.
12889
040a1ab8884f class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 12030
diff changeset
   898
            ] ifFalse:[
040a1ab8884f class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 12030
diff changeset
   899
                allocRate < 0 ifTrue:[
16516
802f3f3d8a8b #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 16264
diff changeset
   900
                    s1 := s1 withColor:(Color green darkened).
802f3f3d8a8b #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 16264
diff changeset
   901
                    s2 := s2 withColor:(Color green darkened).
12889
040a1ab8884f class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 12030
diff changeset
   902
                ]
040a1ab8884f class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 12030
diff changeset
   903
            ].
040a1ab8884f class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 12030
diff changeset
   904
            line := line , (s1 leftPaddedTo:countLen).
040a1ab8884f class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 12030
diff changeset
   905
            line := line , (s2 leftPaddedTo:bytesUsedSize).
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   906
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   907
            l add:line.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   908
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   909
            overAllMaxSize := overAllMaxSize max:entry maxByteSize.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   910
            overAllCount := overAllCount + instCount.
1513
3f03bc75dd28 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1450
diff changeset
   911
        ].
1348
f958dbefe269 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1273
diff changeset
   912
"/ (((lastP asFixedPoint:1) printStringLeftPaddedTo:7) startsWith:'99.') ifTrue:[self halt].
1513
3f03bc75dd28 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1450
diff changeset
   913
        "add summary line"
14692
fa121a4da2ad class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13757
diff changeset
   914
        overAllAvgSize := 0.
fa121a4da2ad class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13757
diff changeset
   915
        overAllCount == 0 ifFalse:[
fa121a4da2ad class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13757
diff changeset
   916
            overAllAvgSize := ((allMemory / overAllCount) * 10) rounded / 10.0.
fa121a4da2ad class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 13757
diff changeset
   917
        ].
19
4cde336c0794 Initial revision
claus
parents:
diff changeset
   918
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   919
        l addFirst:''.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   920
        line := 'all objects' printStringPaddedTo:nameLen.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   921
        line := line , (overAllCount printStringLeftPaddedTo:countLen).
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   922
        line := line , (allMemory printStringLeftPaddedTo:bytesUsedSize).
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   923
        line := line , (overAllAvgSize printStringLeftPaddedTo:avgSizeLen).
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   924
        line := line , (overAllMaxSize printStringLeftPaddedTo:maxSizeLen).
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   925
        line := line , (100.0 printStringLeftPaddedTo:accumMemoryUseLen).
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   926
        l addFirst:line.
92
claus
parents: 69
diff changeset
   927
9931
fe535606118f changed:
Claus Gittinger <cg@exept.de>
parents: 9930
diff changeset
   928
        info addFirst:nil; addFirst:nil.
fe535606118f changed:
Claus Gittinger <cg@exept.de>
parents: 9930
diff changeset
   929
1513
3f03bc75dd28 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1450
diff changeset
   930
        list list:l.
49
6fe62433cfa3 *** empty log message ***
claus
parents: 45
diff changeset
   931
    ]
142
claus
parents: 128
diff changeset
   932
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   933
    "Created: / 19-09-1995 / 15:30:47 / claus"
9931
fe535606118f changed:
Claus Gittinger <cg@exept.de>
parents: 9930
diff changeset
   934
    "Modified: / 11-05-2011 / 14:47:52 / cg"
45
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
   935
!
19
4cde336c0794 Initial revision
claus
parents:
diff changeset
   936
45
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
   937
updateInfo
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
   938
    "scan all memory and collect the information"
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
   939
49
6fe62433cfa3 *** empty log message ***
claus
parents: 45
diff changeset
   940
    windowGroup withCursor:Cursor questionMark do:[
2651
ec18d82620d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1823
diff changeset
   941
        |myProcess myPriority|
45
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
   942
2651
ec18d82620d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1823
diff changeset
   943
        "find all objects, collect stuff in info"
45
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
   944
2651
ec18d82620d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1823
diff changeset
   945
        "
ec18d82620d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1823
diff changeset
   946
         this is a time consuming operation; therefore lower my priority ...
ec18d82620d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1823
diff changeset
   947
        "
ec18d82620d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1823
diff changeset
   948
        myProcess := Processor activeProcess.
ec18d82620d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1823
diff changeset
   949
        myPriority := myProcess priority.
ec18d82620d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1823
diff changeset
   950
        myProcess priority:(Processor userBackgroundPriority).
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
   951
        prevRawInfo := rawInfo.
45
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
   952
2651
ec18d82620d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1823
diff changeset
   953
        rawInfo := IdentityDictionary new:600.
52
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
   954
2651
ec18d82620d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1823
diff changeset
   955
        [   |behaviorFlag|
142
claus
parents: 128
diff changeset
   956
2651
ec18d82620d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1823
diff changeset
   957
            behaviorFlag := Behavior flagBehavior.
142
claus
parents: 128
diff changeset
   958
2651
ec18d82620d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1823
diff changeset
   959
            ObjectMemory allObjectsDo:[:o |
9924
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   960
                |infoEntry class flags skip|
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   961
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   962
                skip := false.
45
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
   963
142
claus
parents: 128
diff changeset
   964
"/              o isBehavior ifTrue:[
2651
ec18d82620d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1823
diff changeset
   965
                class := o class.
7860
e160fb58f797 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6825
diff changeset
   966
                flags := class flags.
e160fb58f797 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6825
diff changeset
   967
                (flags notNil and:[flags class == SmallInteger]) ifTrue:[
9924
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   968
                    (filter isNil or:[ filter value:o value:class ]) ifTrue:[
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   969
                        (flags bitAnd:behaviorFlag) ~~ 0 ifTrue:[
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   970
                            Error 
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   971
                                handle:[:ex |] 
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   972
                                do:[    
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   973
                                    o isObsolete ifTrue:[
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   974
                                        class := #ObsoleteClass
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   975
                                    ] ifFalse:[
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   976
                                        o isMeta ifTrue:[
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   977
                                            o isPrivate ifTrue:[
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   978
                                                class := #PrivateMetaclass
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   979
                                            ] ifFalse:[
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   980
                                                class := #Metaclass
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   981
                                            ]
7860
e160fb58f797 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6825
diff changeset
   982
                                        ] ifFalse:[
9924
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   983
                                            o isPrivate ifTrue:[
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   984
                                                class := #PrivateClass
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   985
                                            ] ifFalse:[
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   986
                                                (o isNameSpace
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   987
                                                and:[o ~~ NameSpace
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   988
                                                and:[o ~~ Smalltalk]])
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   989
                                                ifTrue:[
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   990
                                                    class := #NameSpace
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   991
                                                ] ifFalse:[
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   992
                                                    class := #Class
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   993
                                                ]
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   994
                                            ]    
7860
e160fb58f797 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6825
diff changeset
   995
                                        ]
6825
ac5b9d134326 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   996
                                    ]
ac5b9d134326 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   997
                                ]
9924
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   998
                        ]
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
   999
                    ] ifFalse:[
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
  1000
                        skip := true
7860
e160fb58f797 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6825
diff changeset
  1001
                    ].
2651
ec18d82620d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1823
diff changeset
  1002
                ].
9924
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
  1003
                skip ifFalse:[
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
  1004
                    infoEntry := rawInfo at:class ifAbsent:nil.
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
  1005
                    infoEntry isNil ifTrue:[
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
  1006
                        infoEntry := StatisticEntry new.
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
  1007
                        rawInfo at:class put:infoEntry. 
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
  1008
                    ].
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
  1009
                    infoEntry addStatisticForInstance:o class:class.
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
  1010
                ] ifTrue:[
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
  1011
"/ self halt
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1012
                ].
2651
ec18d82620d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1823
diff changeset
  1013
            ].
16264
0a1ec4843fed #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 16252
diff changeset
  1014
        ] ensure:[
2651
ec18d82620d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1823
diff changeset
  1015
            myProcess priority:myPriority.
ec18d82620d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1823
diff changeset
  1016
        ].
45
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
  1017
    ]
142
claus
parents: 128
diff changeset
  1018
6825
ac5b9d134326 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
  1019
    "Modified: / 19-09-1995 / 15:29:10 / claus"
9924
d4cd990abf99 class definition
Claus Gittinger <cg@exept.de>
parents: 9887
diff changeset
  1020
    "Modified: / 08-05-2011 / 12:35:11 / cg"
19
4cde336c0794 Initial revision
claus
parents:
diff changeset
  1021
! !
45
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
  1022
92
claus
parents: 69
diff changeset
  1023
!MemoryUsageView methodsFor:'realization'!
claus
parents: 69
diff changeset
  1024
claus
parents: 69
diff changeset
  1025
realize
claus
parents: 69
diff changeset
  1026
    super realize.
1348
f958dbefe269 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1273
diff changeset
  1027
    titleLabel origin:(list originRelativeTo:self) x @ 0.0.
92
claus
parents: 69
diff changeset
  1028
    self updateInfo.
12892
1215124609dc class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 12889
diff changeset
  1029
1215124609dc class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 12889
diff changeset
  1030
    "/ self sortByClass.
1215124609dc class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 12889
diff changeset
  1031
    self sortByMemoryUsage.
1215124609dc class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 12889
diff changeset
  1032
1215124609dc class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 12889
diff changeset
  1033
    "/ self updateDisplay.
1348
f958dbefe269 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1273
diff changeset
  1034
f958dbefe269 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1273
diff changeset
  1035
    "Modified: 14.10.1997 / 21:03:52 / cg"
92
claus
parents: 69
diff changeset
  1036
! !
claus
parents: 69
diff changeset
  1037
9887
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1038
!MemoryUsageView::StatisticEntry methodsFor:'accessing'!
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1039
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1040
averageSize
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1041
    averageSize isNil ifTrue:[
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1042
        averageSize := overallByteSize / instanceCount
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1043
    ].
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1044
    ^ averageSize.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1045
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1046
    "Created: / 05-05-2011 / 16:09:35 / cg"
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1047
!
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1048
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1049
classNameOrSymbol
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1050
    ^ classNameOrSymbol
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1051
!
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1052
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1053
classNameStringInList
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1054
    classNameOrSymbol == #Class ifTrue:[
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1055
        ^ '<all classes>'
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1056
    ].
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1057
    classNameOrSymbol == #Metaclass ifTrue:[
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1058
        ^ '<all metaclasses>'
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1059
    ].
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1060
    classNameOrSymbol == #PrivateMetaclass ifTrue:[
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1061
        ^ '<all private meta classes>'
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1062
    ].
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1063
    classNameOrSymbol == #PrivateClass ifTrue:[
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1064
        ^ '<all private classes>'
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1065
    ].
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1066
    classNameOrSymbol == #ObsoleteClass ifTrue:[
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1067
        ^ '<all obsolete classes>'
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1068
    ].
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1069
    classNameOrSymbol == #NameSpace ifTrue:[
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1070
        ^ '<all namespaces>'
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1071
    ].
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1072
    classNameOrSymbol isJavaClass ifTrue:[
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1073
        ^ classNameOrSymbol fullName asString copyReplaceAll:$/ with:$.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1074
    ].
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1075
    classNameOrSymbol isObsolete ifTrue:[
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1076
        ^ classNameOrSymbol name , ' (obsolete)'
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1077
    ].
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1078
    ^ classNameOrSymbol "displayString" name
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1079
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1080
    "Created: / 05-05-2011 / 16:32:58 / cg"
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1081
!
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1082
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1083
instanceAllocationRate
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1084
    ^ instanceAllocationRate ? 0
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1085
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1086
    "Modified: / 05-05-2011 / 17:10:50 / cg"
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1087
!
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1088
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1089
instanceAllocationRate:something
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1090
    instanceAllocationRate := something.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1091
!
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1092
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1093
instanceCount
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1094
    ^ instanceCount
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1095
!
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1096
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1097
maxByteSize
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1098
    ^ maxByteSize
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1099
!
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1100
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1101
memoryAllocationRate
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1102
    ^ memoryAllocationRate ? 0
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1103
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1104
    "Modified: / 05-05-2011 / 17:10:56 / cg"
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1105
!
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1106
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1107
memoryAllocationRate:something
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1108
    memoryAllocationRate := something.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1109
!
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1110
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1111
minByteSize
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1112
    ^ minByteSize
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1113
!
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1114
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1115
overallByteSize
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1116
    ^ overallByteSize
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1117
! !
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1118
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1119
!MemoryUsageView::StatisticEntry methodsFor:'updating'!
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1120
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1121
addStatisticForInstance:o class:classNameOrSymbolArg
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1122
    |bytes|
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1123
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1124
    bytes := ObjectMemory sizeOf:o.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1125
    instanceCount isNil ifTrue:[
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1126
        classNameOrSymbol := classNameOrSymbolArg.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1127
        overallByteSize := bytes.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1128
        minByteSize := maxByteSize := bytes.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1129
        instanceCount := 1.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1130
    ] ifFalse:[
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1131
        overallByteSize := overallByteSize + bytes.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1132
        minByteSize := minByteSize min:bytes.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1133
        maxByteSize := maxByteSize max:bytes.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1134
        instanceCount := instanceCount + 1.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1135
    ].
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1136
    averageSize := nil.
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1137
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1138
    "Created: / 05-05-2011 / 16:04:42 / cg"
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1139
! !
6b439788a66b auto update; more info
Claus Gittinger <cg@exept.de>
parents: 9387
diff changeset
  1140
769
56ecc821f8be checkin from browser
Claus Gittinger <cg@exept.de>
parents: 643
diff changeset
  1141
!MemoryUsageView class methodsFor:'documentation'!
45
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
  1142
437
9526cb043cbc list obsolete & removed classes separately
Claus Gittinger <cg@exept.de>
parents: 165
diff changeset
  1143
version
15742
265bf8c878a0 class: MemoryUsageView
Stefan Vogel <sv@exept.de>
parents: 15379
diff changeset
  1144
    ^ '$Header$'
9339
ff3e7cc06bf1 changed: #displayGlobalRefChainsToInsts
Claus Gittinger <cg@exept.de>
parents: 7950
diff changeset
  1145
!
ff3e7cc06bf1 changed: #displayGlobalRefChainsToInsts
Claus Gittinger <cg@exept.de>
parents: 7950
diff changeset
  1146
ff3e7cc06bf1 changed: #displayGlobalRefChainsToInsts
Claus Gittinger <cg@exept.de>
parents: 7950
diff changeset
  1147
version_CVS
15742
265bf8c878a0 class: MemoryUsageView
Stefan Vogel <sv@exept.de>
parents: 15379
diff changeset
  1148
    ^ '$Header$'
45
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
  1149
! !
12889
040a1ab8884f class: MemoryUsageView
Claus Gittinger <cg@exept.de>
parents: 12030
diff changeset
  1150