| Dear all,
I have added som debugging info for my memory bloating problem, please let me know what I can do more to pinpoint the problem.
Please look at the attached file for more info
Anfang der weitergeleiteten Nachricht:
Betreff: Wtr: [Bsf4oorexx-devel] High memory usage in ooRexx
Datum: 2. Juni 2017 um 17:25:15 MESZ
My apologies for sending the question to the wrong list.
In addition to the above the input is not 40 000 items, that is the top-5 saved, the tip of the iceberg. Input is more like 1-5 million items.
I have enclosed an analysis of the process that have started to go astray, currently using around 25 GB of memory and growing. Hope it helps.
|
Sampling process 10636 for 3 seconds with 1 millisecond of run time between
samples
Sampling completed, processing symbols...
Analysis of sampling rexx (pid 10636) every 1 millisecond
Process: rexx [10636]
Path: /Library/Frameworks/ooRexx.framework/Versions/A/Commands/rexx
Load Address: 0x10da16000
Identifier: rexx
Version: ???
Code Type: X86-64
Parent Process: bash [1496]
Date/Time: 2017-06-02 17:08:03.420 +0200
Launch Time: 2017-06-02 10:42:48.879 +0200
OS Version: Mac OS X 10.12.5 (16F73)
Report Version: 7
Analysis Tool: /usr/bin/sample
----
Call graph:
2636 Thread_73086 DispatchQueue_1: com.apple.main-thread (serial)
2636 start (in rexx) + 52 [0x10da18334]
2636 main (in rexx) + 1561 [0x10da18959]
2636 RexxThreadContext_::CallProgram(char const*, _RexxArrayObject*)
(in rexx) + 70 [0x10da18c06]
2636 CallProgram (in librexx.5.0.0.dylib) + 77 [0x10da8330d]
2636 Activity::run(ActivityDispatcher&) (in librexx.5.0.0.dylib)
+ 142 [0x10dae00fe]
2636 NativeActivation::run(ActivityDispatcher&) (in
librexx.5.0.0.dylib) + 115 [0x10daaedb3]
2636 CallProgramDispatcher::run() (in librexx.5.0.0.dylib) +
325 [0x10dae7115]
2636 RoutineClass::runProgram(Activity*, RexxObject**,
unsigned long, ProtectedObject&) (in librexx.5.0.0.dylib) + 207 [0x10da5c7df]
2636 RexxCode::call(Activity*, RoutineClass*,
RexxString*, RexxObject**, unsigned long, RexxString*, RexxString*,
ActivationContext, ProtectedObject&) (in librexx.5.0.0.dylib) + 180
[0x10daa9384]
2636 RexxActivation::run(RexxObject*, RexxString*,
RexxObject**, unsigned long, RexxInstruction*, ProtectedObject&) (in
librexx.5.0.0.dylib) + 1713 [0x10da9c831]
2636
RexxInstructionAssignment::execute(RexxActivation*, ExpressionStack*) (in
librexx.5.0.0.dylib) + 249 [0x10daf8609]
2636
RexxExpressionFunction::evaluate(RexxActivation*, ExpressionStack*) (in
librexx.5.0.0.dylib) + 189 [0x10daf2dad]
2636 RexxActivation::internalCall(RexxString*,
RexxInstruction*, RexxObject**, unsigned long, ProtectedObject&) (in
librexx.5.0.0.dylib) + 203 [0x10daa2bbb]
2636 RexxActivation::run(RexxObject*,
RexxString*, RexxObject**, unsigned long, RexxInstruction*, ProtectedObject&)
(in librexx.5.0.0.dylib) + 1713 [0x10da9c831]
2631
RexxInstructionAssignment::execute(RexxActivation*, ExpressionStack*) (in
librexx.5.0.0.dylib) + 249 [0x10daf8609]
+ 2622
RexxBinaryOperator::evaluate(RexxActivation*, ExpressionStack*) (in
librexx.5.0.0.dylib) + 146 [0x10daf4372]
+ ! 2622
RexxObject::callOperatorMethod(unsigned long, RexxObject*) (in
librexx.5.0.0.dylib) + 139 [0x10da53e8b]
+ ! 2483
RexxString::concatBlank(RexxObject*) (in librexx.5.0.0.dylib) + 109
[0x10da65d6d]
+ ! : 2483 raw_string(unsigned long) (in
librexx.5.0.0.dylib) + 21 [0x10da35ba5]
+ ! : 2483 RexxString::rawString(unsigned
long) (in librexx.5.0.0.dylib) + 40 [0x10da670b8]
+ ! : 2483 new_object(unsigned long,
unsigned long) (in librexx.5.0.0.dylib) + 39 [0x10da22eb7]
+ ! : 2323
MemoryObject::newObject(unsigned long, unsigned long) (in librexx.5.0.0.dylib)
+ 232 [0x10dad5e88]
+ ! : | 2319
LargeSegmentSet::handleAllocationFailure(unsigned long) (in
librexx.5.0.0.dylib) + 47 [0x10dabff0f]
+ ! : | + 2305
LargeSegmentSet::expandOrCollect(unsigned long) (in librexx.5.0.0.dylib) + 233
[0x10dac00c9]
+ ! : | + ! 2291
MemoryObject::collect() (in librexx.5.0.0.dylib) + 132 [0x10dad5034]
+ ! : | + ! : 2267
MemorySegmentSet::sweep() (in librexx.5.0.0.dylib) + 426 [0x10dabf91a]
+ ! : | + ! : | 2267
LargeSegmentSet::addDeadObject(char*, unsigned long) (in librexx.5.0.0.dylib)
+ 79 [0x10dabe4ff]
+ ! : | + ! : | 1988
DeadObjectPool::addSortedBySize(DeadObject*) (in librexx.5.0.0.dylib) + 50
[0x10dab85c2]
+ ! : | + ! : | + 1822
DeadObject::isReal() (in librexx.5.0.0.dylib) + 25 [0x10dab8579]
+ ! : | + ! : | + ! 1822
ObjectHeader::getObjectSize() (in librexx.5.0.0.dylib) + 15,0,...
[0x10da5427f,0x10da54270,...]
+ ! : | + ! : | + 117
DeadObject::isReal() (in librexx.5.0.0.dylib) + 8,32,...
[0x10dab8568,0x10dab8580,...]
+ ! : | + ! : | + 49
DYLD-STUB$$ObjectHeader::getObjectSize() (in librexx.5.0.0.dylib) + 0
[0x10db48fa2]
+ ! : | + ! : | 135
DeadObjectPool::addSortedBySize(DeadObject*) (in librexx.5.0.0.dylib) +
72,41,... [0x10dab85d8,0x10dab85b9,...]
+ ! : | + ! : | 105
DeadObjectPool::addSortedBySize(DeadObject*) (in librexx.5.0.0.dylib) + 72
[0x10dab85d8]
+ ! : | + ! : | + 45
DeadObject::getObjectSize() (in librexx.5.0.0.dylib) + 25 [0x10dab8429]
+ ! : | + ! : | + ! 45
ObjectHeader::getObjectSize() (in librexx.5.0.0.dylib) + 0,8,...
[0x10da54270,0x10da54278,...]
+ ! : | + ! : | + 31
DYLD-STUB$$ObjectHeader::getObjectSize() (in librexx.5.0.0.dylib) + 0
[0x10db48fa2]
+ ! : | + ! : | + 29
DeadObject::getObjectSize() (in librexx.5.0.0.dylib) + 0,8,...
[0x10dab8410,0x10dab8418,...]
+ ! : | + ! : | 27
DYLD-STUB$$DeadObject::getObjectSize() (in librexx.5.0.0.dylib) + 0
[0x10db489ae]
+ ! : | + ! : | 11
DYLD-STUB$$DeadObject::isReal() (in librexx.5.0.0.dylib) + 0 [0x10db489c6]
+ ! : | + ! : | 1
DeadObjectPool::addSortedBySize(DeadObject*) (in librexx.5.0.0.dylib) + 117
[0x10dab8605]
+ ! : | + ! : | 1
DeadObject::insertBefore(DeadObject*) (in librexx.5.0.0.dylib) + 24
[0x10dab8628]
+ ! : | + ! : 9
MemorySegmentSet::sweep() (in librexx.5.0.0.dylib) + 461 [0x10dabf93d]
+ ! : | + ! : | 9
MemorySegmentSet::next(MemorySegment*) (in librexx.5.0.0.dylib) + 29
[0x10dabd59d]
+ ! : | + ! : | 9
MemorySegment::isReal() (in librexx.5.0.0.dylib) + 16 [0x10dabe010]
+ ! : | + ! : 5
MemorySegmentSet::sweep() (in librexx.5.0.0.dylib) + 130 [0x10dabf7f2]
+ ! : | + ! : | 5
RexxInternalObject::isObjectLive(unsigned long) (in librexx.5.0.0.dylib) + 44
[0x10dabd3bc]
+ ! : | + ! : | 5
ObjectHeader::isObjectLive(unsigned long) (in librexx.5.0.0.dylib) + 20
[0x10dac0cf4]
+ ! : | + ! : 4
MemorySegmentSet::sweep() (in librexx.5.0.0.dylib) + 298 [0x10dabf89a]
+ ! : | + ! : | 4
RexxInternalObject::isObjectDead(unsigned long) (in librexx.5.0.0.dylib) + 44
[0x10dabf99c]
+ ! : | + ! : | 4
ObjectHeader::isObjectDead(unsigned long) (in librexx.5.0.0.dylib) + 20
[0x10dac0f84]
+ ! : | + ! : 3
MemorySegmentSet::sweep() (in librexx.5.0.0.dylib) + 242,138,...
[0x10dabf862,0x10dabf7fa,...]
+ ! : | + ! : 2
MemorySegmentSet::sweep() (in librexx.5.0.0.dylib) + 439 [0x10dabf927]
+ ! : | + ! : | 2
RexxInternalObject::nextObject(unsigned long) (in librexx.5.0.0.dylib) + 0
[0x10dabf9b0]
+ ! : | + ! : 1
MemorySegmentSet::sweep() (in librexx.5.0.0.dylib) + 260 [0x10dabf874]
+ ! : | + ! : 1
DYLD-STUB$$RexxInternalObject::getObjectSize() (in librexx.5.0.0.dylib) + 0
[0x10db49d46]
+ ! : | + ! 12
MemoryObject::collect() (in librexx.5.0.0.dylib) + 96 [0x10dad5010]
+ ! : | + ! : 12
MemoryObject::markObjects() (in librexx.5.0.0.dylib) + 45 [0x10dad53ed]
+ ! : | + ! : 9
MemoryObject::markObjectsMain(RexxInternalObject*) (in librexx.5.0.0.dylib) +
227 [0x10dad4cb3]
+ ! : | + ! : | 1
DYLD-STUB$$RexxInternalObject::isObjectMarked(unsigned long) (in
librexx.5.0.0.dylib) + 0 [0x10db49d70]
+ ! : | + ! : | 1
RexxExpressionFunction::live(unsigned long) (in librexx.5.0.0.dylib) + 25
[0x10daf29f9]
+ ! : | + ! : | 1
RexxInstructionAssignment::live(unsigned long) (in librexx.5.0.0.dylib) + 55
[0x10daf8347]
+ ! : | + ! : | + 1
RexxInternalObject::isObjectMarked(unsigned long) (in librexx.5.0.0.dylib) +
44 [0x10da2330c]
+ ! : | + ! : | + 1
ObjectHeader::isObjectMarked(unsigned long) (in librexx.5.0.0.dylib) + 20
[0x10da28b94]
+ ! : | + ! : | 1
RexxInstructionAssignment::live(unsigned long) (in librexx.5.0.0.dylib) + 121
[0x10daf8389]
+ ! : | + ! : | + 1
RexxInternalObject::isObjectMarked(unsigned long) (in librexx.5.0.0.dylib) +
44 [0x10da2330c]
+ ! : | + ! : | + 1
ObjectHeader::isObjectMarked(unsigned long) (in librexx.5.0.0.dylib) + 20
[0x10da28b94]
+ ! : | + ! : | 1
RexxInstructionBaseDo::live(unsigned long) (in librexx.5.0.0.dylib) + 55
[0x10daf8727]
+ ! : | + ! : | + 1
RexxInternalObject::isObjectMarked(unsigned long) (in librexx.5.0.0.dylib) +
44 [0x10da2330c]
+ ! : | + ! : | + 1
ObjectHeader::isObjectMarked(unsigned long) (in librexx.5.0.0.dylib) + 20
[0x10da28b94]
+ ! : | + ! : | 1
RexxInstructionEnd::live(unsigned long) (in librexx.5.0.0.dylib) + 55
[0x10db03f67]
+ ! : | + ! : | + 1
RexxInternalObject::isObjectMarked(unsigned long) (in librexx.5.0.0.dylib) +
20 [0x10da232f4]
+ ! : | + ! : | 1
RexxInstructionEndIf::live(unsigned long) (in librexx.5.0.0.dylib) + 55
[0x10db03b37]
+ ! : | + ! : | + 1
RexxInternalObject::isObjectMarked(unsigned long) (in librexx.5.0.0.dylib) +
44 [0x10da2330c]
+ ! : | + ! : | + 1
ObjectHeader::isObjectMarked(unsigned long) (in librexx.5.0.0.dylib) + 20
[0x10da28b94]
+ ! : | + ! : | 1
RexxInstructionEndIf::live(unsigned long) (in librexx.5.0.0.dylib) + 187
[0x10db03bbb]
+ ! : | + ! : | + 1
RexxInternalObject::isObjectMarked(unsigned long) (in librexx.5.0.0.dylib) +
44 [0x10da2330c]
+ ! : | + ! : | + 1
ObjectHeader::isObjectMarked(unsigned long) (in librexx.5.0.0.dylib) + 20
[0x10da28b94]
+ ! : | + ! : | 1
RexxObject::live(unsigned long) (in librexx.5.0.0.dylib) + 55 [0x10da4cd77]
+ ! : | + ! : | 1
RexxInternalObject::isObjectMarked(unsigned long) (in librexx.5.0.0.dylib) +
44 [0x10da2330c]
+ ! : | + ! : | 1
ObjectHeader::isObjectMarked(unsigned long) (in librexx.5.0.0.dylib) + 20
[0x10da28b94]
+ ! : | + ! : 1
MemoryObject::markObjectsMain(RexxInternalObject*) (in librexx.5.0.0.dylib) +
151 [0x10dad4c67]
+ ! : | + ! : | 1
RexxInternalObject::isObjectMarked(unsigned long) (in librexx.5.0.0.dylib) +
44 [0x10da2330c]
+ ! : | + ! : | 1
ObjectHeader::isObjectMarked(unsigned long) (in librexx.5.0.0.dylib) + 16
[0x10da28b90]
+ ! : | + ! : 1
MemoryObject::markObjectsMain(RexxInternalObject*) (in librexx.5.0.0.dylib) +
236 [0x10dad4cbc]
+ ! : | + ! : | 1
MemoryObject::popLiveStack() (in librexx.5.0.0.dylib) + 25 [0x10dad4de9]
+ ! : | + ! : | 1
LiveStack::pop() (in librexx.5.0.0.dylib) + 64 [0x10dac3a30]
+ ! : | + ! : 1
MemoryObject::markObjectsMain(RexxInternalObject*) (in librexx.5.0.0.dylib) +
125 [0x10dad4c4d]
+ ! : | + ! 2 MemoryObject::collect()
(in librexx.5.0.0.dylib) + 114 [0x10dad5022]
+ ! : | + ! 1
MemorySegmentSet::sweep() (in librexx.5.0.0.dylib) + 200 [0x10dabf838]
+ ! : | + ! | 1
RexxInternalObject::nextObject() (in librexx.5.0.0.dylib) + 8 [0x10dabd368]
+ ! : | + ! 1
MemorySegmentSet::sweep() (in librexx.5.0.0.dylib) + 216 [0x10dabf848]
+ ! : | + 8
LargeSegmentSet::expandOrCollect(unsigned long) (in librexx.5.0.0.dylib) + 113
[0x10dac0051]
+ ! : | + ! 6
MemorySegmentSet::largestActiveSegment() (in librexx.5.0.0.dylib) + 44
[0x10dac06cc]
+ ! : | + ! : 6
MemorySegment::isReal() (in librexx.5.0.0.dylib) + 16 [0x10dabe010]
+ ! : | + ! 2
MemorySegmentSet::largestActiveSegment() (in librexx.5.0.0.dylib) + 113,105
[0x10dac0711,0x10dac0709]
+ ! : | + 6
LargeSegmentSet::expandOrCollect(unsigned long) (in librexx.5.0.0.dylib) + 249
[0x10dac00d9]
+ ! : | + 6
MemorySegmentSet::mergeSegments(unsigned long) (in librexx.5.0.0.dylib) + 35
[0x10dac0223]
+ ! : | + 5
MemorySegmentSet::largestActiveSegment() (in librexx.5.0.0.dylib) + 44
[0x10dac06cc]
+ ! : | + : 5
MemorySegment::isReal() (in librexx.5.0.0.dylib) + 16 [0x10dabe010]
+ ! : | + 1
MemorySegmentSet::largestActiveSegment() (in librexx.5.0.0.dylib) + 113
[0x10dac0711]
+ ! : | 4
LargeSegmentSet::handleAllocationFailure(unsigned long) (in
librexx.5.0.0.dylib) + 60 [0x10dabff1c]
+ ! : | 4
LargeSegmentSet::findObject(unsigned long) (in librexx.5.0.0.dylib) + 29
[0x10dabfe3d]
+ ! : | 4
LargeSegmentSet::allocateObject(unsigned long) (in librexx.5.0.0.dylib) + 46
[0x10dabfe7e]
+ ! : | 4
DeadObjectPool::findBestFit(unsigned long) (in librexx.5.0.0.dylib) + 198
[0x10dab83c6]
+ ! : | 4
DeadObject::getObjectSize() (in librexx.5.0.0.dylib) + 25 [0x10dab8429]
+ ! : | 4
ObjectHeader::getObjectSize() (in librexx.5.0.0.dylib) + 15 [0x10da5427f]
+ ! : 82
MemoryObject::newObject(unsigned long, unsigned long) (in librexx.5.0.0.dylib)
+ 309 [0x10dad5ed5]
+ ! : | 82
RexxObject::initializeNewObject(unsigned long, void*, RexxBehaviour*) (in
librexx.5.0.0.dylib) + 95 [0x10dad5f5f]
+ ! : | 82
RexxInternalObject::clearObject() (in librexx.5.0.0.dylib) + 52 [0x10da71e84]
+ ! : | 82
_platform_bzero$VARIANT$Base (in libsystem_platform.dylib) + 51,59,...
[0x7fff8eb22ca3,0x7fff8eb22cab,...]
+ ! : 77
MemoryObject::newObject(unsigned long, unsigned long) (in librexx.5.0.0.dylib)
+ 195 [0x10dad5e63]
+ ! : | 64
LargeSegmentSet::allocateObject(unsigned long) (in librexx.5.0.0.dylib) + 46
[0x10dabfe7e]
+ ! : | + 61
DeadObjectPool::findBestFit(unsigned long) (in librexx.5.0.0.dylib) + 198
[0x10dab83c6]
+ ! : | + ! 59
DeadObject::getObjectSize() (in librexx.5.0.0.dylib) + 25 [0x10dab8429]
+ ! : | + ! : 59
ObjectHeader::getObjectSize() (in librexx.5.0.0.dylib) + 15 [0x10da5427f]
+ ! : | + ! 2
DeadObject::getObjectSize() (in librexx.5.0.0.dylib) + 25,8
[0x10dab8429,0x10dab8418]
+ ! : | + 3
DeadObjectPool::findBestFit(unsigned long) (in librexx.5.0.0.dylib) +
137,159,... [0x10dab8389,0x10dab839f,...]
+ ! : | 13
LargeSegmentSet::allocateObject(unsigned long) (in librexx.5.0.0.dylib) + 114
[0x10dabfec2]
+ ! : | 13
MemorySegmentSet::splitDeadObject(DeadObject*, unsigned long, unsigned long)
(in librexx.5.0.0.dylib) + 127 [0x10dabfa5f]
+ ! : | 13
LargeSegmentSet::addDeadObject(char*, unsigned long) (in librexx.5.0.0.dylib)
+ 79 [0x10dabe4ff]
+ ! : | 13
DeadObjectPool::addSortedBySize(DeadObject*) (in librexx.5.0.0.dylib) + 50
[0x10dab85c2]
+ ! : | 13
DeadObject::isReal() (in librexx.5.0.0.dylib) + 25 [0x10dab8579]
+ ! : | 13
ObjectHeader::getObjectSize() (in librexx.5.0.0.dylib) + 15 [0x10da5427f]
+ ! : 1
MemoryObject::newObject(unsigned long, unsigned long) (in librexx.5.0.0.dylib)
+ 332 [0x10dad5eec]
+ ! 139
RexxString::concatBlank(RexxObject*) (in librexx.5.0.0.dylib) + 151
[0x10da65d97]
+ ! 139
RexxString::StringBuilder::append(char const*, unsigned long) (in
librexx.5.0.0.dylib) + 47 [0x10da65acf]
+ ! 139
_platform_memmove$VARIANT$Nehalem (in libsystem_platform.dylib) + 254,224,...
[0x7fff8eb1e0de,0x7fff8eb1e0c0,...]
+ 8
RexxExpressionMessage::evaluate(RexxActivation*, ExpressionStack*) (in
librexx.5.0.0.dylib) + 281 [0x10daf3779]
+ ! 8 ExpressionStack::send(RexxString*,
unsigned long, ProtectedObject&) (in librexx.5.0.0.dylib) + 104 [0x10daf39b8]
+ ! 7 RexxObject::messageSend(RexxString*,
RexxObject**, unsigned long, ProtectedObject&) (in librexx.5.0.0.dylib) + 283
[0x10da4e24b]
+ ! : 6 MethodClass::run(Activity*,
RexxObject*, RexxString*, RexxObject**, unsigned long, ProtectedObject&) (in
librexx.5.0.0.dylib) + 115 [0x10da3ae93]
+ ! : | 3 CPPCode::run(Activity*,
MethodClass*, RexxObject*, RexxString*, RexxObject**, unsigned long,
ProtectedObject&) (in librexx.5.0.0.dylib) + 1150 [0x10da98b0e]
+ ! : | + 3
RexxString::wordPos(RexxString*, RexxInteger*) (in librexx.5.0.0.dylib) + 69
[0x10da6ccf5]
+ ! : | + 3 StringUtil::wordPos(char
const*, unsigned long, RexxString*, RexxInteger*) (in librexx.5.0.0.dylib) +
160 [0x10da7dcd0]
+ ! : | + 3 StringUtil::wordCount(char
const*, unsigned long) (in librexx.5.0.0.dylib) + 74 [0x10da7d0da]
+ ! : | + 1
RexxString::WordIterator::next() (in librexx.5.0.0.dylib) + 71 [0x10da40567]
+ ! : | + ! 1
RexxString::WordIterator::skipBlanks(char const*&, unsigned long&) (in
librexx.5.0.0.dylib) + 91 [0x10da408cb]
+ ! : | + 1
RexxString::WordIterator::next() (in librexx.5.0.0.dylib) + 141 [0x10da405ad]
+ ! : | + ! 1
RexxString::WordIterator::skipNonBlanks(char const*&, unsigned long&) (in
librexx.5.0.0.dylib) + 124 [0x10da4097c]
+ ! : | + 1
RexxString::WordIterator::next() (in librexx.5.0.0.dylib) + 111 [0x10da4058f]
+ ! : | 3 NativeMethod::run(Activity*,
MethodClass*, RexxObject*, RexxString*, RexxObject**, unsigned long,
ProtectedObject&) (in librexx.5.0.0.dylib) + 209 [0x10dab23f1]
+ ! : | 3
NativeActivation::run(MethodClass*, NativeMethod*, RexxObject*, RexxString*,
RexxObject**, unsigned long, ProtectedObject&) (in librexx.5.0.0.dylib) + 588
[0x10daadb7c]
+ ! : | 3 stream_linein (in
librexx.5.0.0.dylib) + 60 [0x10db420ec]
+ ! : | 2
stream_linein_impl(RexxMethodContext_*, void*, long long, unsigned long) (in
librexx.5.0.0.dylib) + 231 [0x10db42207]
+ ! : | ! 2 StreamInfo::linein(bool,
long long, unsigned long) (in librexx.5.0.0.dylib) + 290 [0x10db420a2]
+ ! : | ! 2
StreamInfo::readVariableLine() (in librexx.5.0.0.dylib) + 185 [0x10db41639]
+ ! : | ! 2
RexxMethodContext_::NewString(char const*, unsigned long) (in
librexx.5.0.0.dylib) + 40 [0x10da5df58]
+ ! : | ! 2
RexxThreadContext_::NewString(char const*, unsigned long) (in
librexx.5.0.0.dylib) + 70 [0x10da5e7a6]
+ ! : | ! 2 NewString (in
librexx.5.0.0.dylib) + 68 [0x10da85734]
+ ! : | ! 2
ApiContext::ret(RexxInternalObject*) (in librexx.5.0.0.dylib) + 33
[0x10da7e911]
+ ! : | ! 1
NativeActivation::createLocalReference(RexxInternalObject*) (in
librexx.5.0.0.dylib) + 68 [0x10daac964]
+ ! : | ! : 1
new_identity_table() (in librexx.5.0.0.dylib) + 49 [0x10da8d041]
+ ! : | ! : 1
IdentityTable::IdentityTable(unsigned long) (in librexx.5.0.0.dylib) + 29
[0x10da8ec8d]
+ ! : | ! : 1
IdentityTable::IdentityTable(unsigned long) (in librexx.5.0.0.dylib) + 39
[0x10da8ecc7]
+ ! : | ! : 1
IdentityHashCollection::IdentityHashCollection(unsigned long) (in
librexx.5.0.0.dylib) + 55 [0x10da710a7]
+ ! : | ! : 1
HashCollection::initialize(unsigned long) (in librexx.5.0.0.dylib) + 90
[0x10da6f81a]
+ ! : | ! : 1
IdentityHashCollection::allocateContents(unsigned long, unsigned long) (in
librexx.5.0.0.dylib) + 39 [0x10da711f7]
+ ! : | ! : 1
IdentityHashContents::operator new(unsigned long, unsigned long) (in
librexx.5.0.0.dylib) + 58 [0x10da71cea]
+ ! : | ! :
1 new_object(unsigned long, unsigned long) (in librexx.5.0.0.dylib) + 39
[0x10da22eb7]
+ ! : | ! :
1 MemoryObject::newObject(unsigned long, unsigned long) (in
librexx.5.0.0.dylib) + 114 [0x10dad5e12]
+ ! : | ! :
1 NormalSegmentSet::allocateObject(unsigned long) (in librexx.5.0.0.dylib)
+ 312 [0x10dabfc88]
+ ! : | ! :
1 DeadObjectPool::findFit(unsigned long, unsigned long*) (in
librexx.5.0.0.dylib) + 102 [0x10dac1076]
+ ! : | ! :
1 DeadObject::remove() (in librexx.5.0.0.dylib) + 24 [0x10dab8448]
+ ! : | ! 1
NativeActivation::createLocalReference(RexxInternalObject*) (in
librexx.5.0.0.dylib) + 164 [0x10daac9c4]
+ ! : | ! 1
HashCollection::put(RexxInternalObject*, RexxInternalObject*) (in
librexx.5.0.0.dylib) + 82 [0x10da70292]
+ ! : | 1
stream_linein_impl(RexxMethodContext_*, void*, long long, unsigned long) (in
librexx.5.0.0.dylib) + 77 [0x10db4216d]
+ ! : | 1
checkStreamInfo(RexxMethodContext_*, void*, _RexxObjectPtr*) (in
librexx.5.0.0.dylib) + 88 [0x10db3eec8]
+ ! : 1 MethodClass::run(Activity*,
RexxObject*, RexxString*, RexxObject**, unsigned long, ProtectedObject&) (in
librexx.5.0.0.dylib) + 51 [0x10da3ae53]
+ ! 1 RexxObject::messageSend(RexxString*,
RexxObject**, unsigned long, ProtectedObject&) (in librexx.5.0.0.dylib) + 59
[0x10da4e16b]
+ 1
RexxBinaryOperator::evaluate(RexxActivation*, ExpressionStack*) (in
librexx.5.0.0.dylib) + 118 [0x10daf4356]
+ 1
RexxExpressionMessage::evaluate(RexxActivation*, ExpressionStack*) (in
librexx.5.0.0.dylib) + 281 [0x10daf3779]
+ 1 ExpressionStack::send(RexxString*,
unsigned long, ProtectedObject&) (in librexx.5.0.0.dylib) + 104 [0x10daf39b8]
+ 1
RexxObject::messageSend(RexxString*, RexxObject**, unsigned long,
ProtectedObject&) (in librexx.5.0.0.dylib) + 283 [0x10da4e24b]
+ 1 MethodClass::run(Activity*,
RexxObject*, RexxString*, RexxObject**, unsigned long, ProtectedObject&) (in
librexx.5.0.0.dylib) + 115 [0x10da3ae93]
+ 1 CPPCode::run(Activity*,
MethodClass*, RexxObject*, RexxString*, RexxObject**, unsigned long,
ProtectedObject&) (in librexx.5.0.0.dylib) + 958 [0x10da98a4e]
+ 1
RexxString::word(RexxInteger*) (in librexx.5.0.0.dylib) + 61 [0x10da6cbfd]
+ 1 StringUtil::word(char
const*, unsigned long, RexxInteger*) (in librexx.5.0.0.dylib) + 167
[0x10da7d9b7]
+ 1 new_string(char const*,
unsigned long) (in librexx.5.0.0.dylib) + 29 [0x10da28ffd]
+ 1
RexxString::newString(char const*, unsigned long) (in librexx.5.0.0.dylib) +
47 [0x10da66fdf]
+ 1 new_object(unsigned
long, unsigned long) (in librexx.5.0.0.dylib) + 39 [0x10da22eb7]
+ 1
MemoryObject::newObject(unsigned long, unsigned long) (in librexx.5.0.0.dylib)
+ 114 [0x10dad5e12]
+ 1
NormalSegmentSet::allocateObject(unsigned long) (in librexx.5.0.0.dylib) + 109
[0x10dabfbbd]
+ 1
DeadObjectPool::getFirstSingle() (in librexx.5.0.0.dylib) + 56 [0x10dac0fd8]
3
RexxInstructionEnd::execute(RexxActivation*, ExpressionStack*) (in
librexx.5.0.0.dylib) + 228 [0x10db04184]
+ 3
RexxInstructionBaseDo::reExecute(RexxActivation*, ExpressionStack*, DoBlock*)
(in librexx.5.0.0.dylib) + 128 [0x10daf8bf0]
+ 3
RexxInstructionDoWhile::iterate(RexxActivation*, ExpressionStack*, DoBlock*,
bool) (in librexx.5.0.0.dylib) + 56 [0x10db02ec8]
+ 3
WhileUntilLoop::checkWhile(RexxActivation*, ExpressionStack*) (in
librexx.5.0.0.dylib) + 69 [0x10dafd455]
+ 3
RexxBinaryOperator::evaluate(RexxActivation*, ExpressionStack*) (in
librexx.5.0.0.dylib) + 66 [0x10daf4322]
+ 3
RexxExpressionMessage::evaluate(RexxActivation*, ExpressionStack*) (in
librexx.5.0.0.dylib) + 281 [0x10daf3779]
+ 3
ExpressionStack::send(RexxString*, unsigned long, ProtectedObject&) (in
librexx.5.0.0.dylib) + 104 [0x10daf39b8]
+ 3
RexxObject::messageSend(RexxString*, RexxObject**, unsigned long,
ProtectedObject&) (in librexx.5.0.0.dylib) + 283 [0x10da4e24b]
+ 3 MethodClass::run(Activity*,
RexxObject*, RexxString*, RexxObject**, unsigned long, ProtectedObject&) (in
librexx.5.0.0.dylib) + 115 [0x10da3ae93]
+ 3
NativeMethod::run(Activity*, MethodClass*, RexxObject*, RexxString*,
RexxObject**, unsigned long, ProtectedObject&) (in librexx.5.0.0.dylib) + 209
[0x10dab23f1]
+ 2
NativeActivation::run(MethodClass*, NativeMethod*, RexxObject*, RexxString*,
RexxObject**, unsigned long, ProtectedObject&) (in librexx.5.0.0.dylib) + 588
[0x10daadb7c]
+ ! 2 stream_lines (in
librexx.5.0.0.dylib) + 52 [0x10db42824]
+ ! 2
stream_lines_impl(RexxMethodContext_*, void*, char const*) (in
librexx.5.0.0.dylib) + 212 [0x10db42924]
+ ! 2
StreamInfo::lines(bool) (in librexx.5.0.0.dylib) + 360 [0x10db42698]
+ ! 2
StreamInfo::size() (in librexx.5.0.0.dylib) + 32 [0x10db3f4a0]
+ ! 2
SysFile::getSize(long long&) (in librexx.5.0.0.dylib) + 78 [0x10db3879e]
+ ! 2
fstat$INODE64 (in libsystem_kernel.dylib) + 10 [0x7fff8ea3e9be]
+ 1
NativeActivation::run(MethodClass*, NativeMethod*, RexxObject*, RexxString*,
RexxObject**, unsigned long, ProtectedObject&) (in librexx.5.0.0.dylib) + 206
[0x10daad9fe]
+ 1
NativeCode::getSecurityManager() (in librexx.5.0.0.dylib) + 44 [0x10dab208c]
+ 1
PackageClass::getSecurityManager() (in librexx.5.0.0.dylib) + 16 [0x10daa77d0]
2
RexxInstructionAssignment::execute(RexxActivation*, ExpressionStack*) (in
librexx.5.0.0.dylib) + 266 [0x10daf861a]
2
RexxCompoundVariable::assign(RexxActivation*, RexxObject*) (in
librexx.5.0.0.dylib) + 59 [0x10daf1f1b]
2
RexxActivation::assignLocalCompoundVariable(RexxString*, unsigned long,
RexxInternalObject**, unsigned long, RexxObject*) (in librexx.5.0.0.dylib) +
136 [0x10daa6be8]
2
RexxActivation::getLocalStem(RexxString*, unsigned long) (in
librexx.5.0.0.dylib) + 37 [0x10daa6415]
2
RexxActivation::getLocalStemVariable(RexxString*, unsigned long) (in
librexx.5.0.0.dylib) + 107 [0x10daa8aeb]
1
DYLD-STUB$$VariableDictionary::getStemVariable(RexxString*) (in
librexx.5.0.0.dylib) + 0 [0x10db49fb0]
1
RexxLocalVariables::lookupStemVariable(RexxString*, unsigned long) (in
librexx.5.0.0.dylib) + 217 [0x10daaa889]
1
RexxLocalVariables::autoExpose() (in librexx.5.0.0.dylib) + 0 [0x10daaa6b0]
Total number in stack (recursive counted multiple, when >=5):
7 ObjectHeader::isObjectMarked(unsigned long) (in
librexx.5.0.0.dylib) + 0 [0x10da28b80]
7 RexxInternalObject::isObjectMarked(unsigned long) (in
librexx.5.0.0.dylib) + 44 [0x10da2330c]
5 ObjectHeader::getObjectSize() (in librexx.5.0.0.dylib) + 0
[0x10da54270]
Sort by top of stack, same collapsed (when >= 5):
ObjectHeader::getObjectSize() (in librexx.5.0.0.dylib) 1943
_platform_memmove$VARIANT$Nehalem (in libsystem_platform.dylib)
139
DeadObjectPool::addSortedBySize(DeadObject*) (in librexx.5.0.0.dylib)
135
DeadObject::isReal() (in librexx.5.0.0.dylib) 117
_platform_bzero$VARIANT$Base (in libsystem_platform.dylib) 82
DYLD-STUB$$ObjectHeader::getObjectSize() (in librexx.5.0.0.dylib)
80
DeadObject::getObjectSize() (in librexx.5.0.0.dylib) 31
DYLD-STUB$$DeadObject::getObjectSize() (in librexx.5.0.0.dylib)
27
MemorySegment::isReal() (in librexx.5.0.0.dylib) 20
DYLD-STUB$$DeadObject::isReal() (in librexx.5.0.0.dylib) 11
ObjectHeader::isObjectMarked(unsigned long) (in librexx.5.0.0.dylib)
7
ObjectHeader::isObjectLive(unsigned long) (in librexx.5.0.0.dylib)
5
Binary Images:
0x10da16000 - 0x10da18ff7 +rexx (???)
<273D3FF5-5EB0-30E9-B692-414263389BDD> /usr/local/bin/rexx
0x10da20000 - 0x10dbbdff7 +librexx.5.0.0.dylib (5)
<C8B30294-5785-3944-A330-469F64CE7E04> /usr/local/lib/librexx.5.0.0.dylib
0x10dcb6000 - 0x10dcd0ff7 +librexxapi.5.0.0.dylib (5)
<C231C850-E3AF-357B-83DE-2D99BD068CA4> /usr/local/lib/librexxapi.5.0.0.dylib
0x11090f000 - 0x11091fff7 +librexxutil.dylib (5)
<AD848F33-2A52-34FE-BC64-E1D039831B2C> /usr/local/lib/librexxutil.dylib
0x114fbb000 - 0x114ff8dc7 dyld (0.0 - ???)
<322C06B7-8878-311D-888C-C8FD2CA96FF3> /usr/lib/dyld
0x7fff8d2f2000 - 0x7fff8d2f3ffb libSystem.B.dylib (1238.60.2)
<FC9E9F13-3B18-305C-BE0A-97C7843652B0> /usr/lib/libSystem.B.dylib
0x7fff8d4a5000 - 0x7fff8d4fbff7 libc++.1.dylib (307.5)
<0B43BB5D-E6EB-3464-8DE9-B41AC8ED9D1C> /usr/lib/libc++.1.dylib
0x7fff8d4fc000 - 0x7fff8d526fff libc++abi.dylib (307.3)
<30199352-88BF-30BD-8CFF-2A4FBE247523> /usr/lib/libc++abi.dylib
0x7fff8e019000 - 0x7fff8e3eebc7 libobjc.A.dylib (709)
<54CD8D1A-5C98-3559-B13A-932B3D3DD338> /usr/lib/libobjc.A.dylib
0x7fff8e652000 - 0x7fff8e6a2fff libstdc++.6.dylib (104.1)
<A980E08C-A511-3D19-9881-1D79B7CFF2BA> /usr/lib/libstdc++.6.dylib
0x7fff8e833000 - 0x7fff8e837ff7 libcache.dylib (79)
<093A4DAB-8385-3D47-A350-E20CB7CCF7BF> /usr/lib/system/libcache.dylib
0x7fff8e838000 - 0x7fff8e842fff libcommonCrypto.dylib (60092.50.5)
<8A64D1B0-C70E-385C-92F0-E669079FDA90> /usr/lib/system/libcommonCrypto.dylib
0x7fff8e843000 - 0x7fff8e84afff libcompiler_rt.dylib (62)
<55D47421-772A-32AB-B529-1A46C2F43B4D> /usr/lib/system/libcompiler_rt.dylib
0x7fff8e84b000 - 0x7fff8e853fff libcopyfile.dylib (138)
<819BEA3C-DF11-3E3D-A1A1-5A51C5BF1961> /usr/lib/system/libcopyfile.dylib
0x7fff8e854000 - 0x7fff8e8d7fdf libcorecrypto.dylib (442.50.19)
<65D7165E-2E71-335D-A2D6-33F78E2DF0C1> /usr/lib/system/libcorecrypto.dylib
0x7fff8e8d8000 - 0x7fff8e909fff libdispatch.dylib (703.50.37)
<6582BAD6-ED27-3B30-B620-90B1C5A4AE3C> /usr/lib/system/libdispatch.dylib
0x7fff8e90a000 - 0x7fff8e90fffb libdyld.dylib (433.5)
<EC3D88D2-3D40-3274-8E26-362C2D7352C8> /usr/lib/system/libdyld.dylib
0x7fff8e910000 - 0x7fff8e910ffb libkeymgr.dylib (28)
<7AA011A9-DC21-3488-BF73-3B5B14D1FDD6> /usr/lib/system/libkeymgr.dylib
0x7fff8e91e000 - 0x7fff8e91efff liblaunch.dylib (972.60.2)
<D3306CFF-58AA-3C90-B06C-B70E80E60C5B> /usr/lib/system/liblaunch.dylib
0x7fff8e91f000 - 0x7fff8e924ff3 libmacho.dylib (898)
<17D5D855-F6C3-3B04-B680-E9BF02EF8AED> /usr/lib/system/libmacho.dylib
0x7fff8e925000 - 0x7fff8e927ff3 libquarantine.dylib (85.50.1)
<12448CC2-378E-35F3-BE33-9DC395A5B970> /usr/lib/system/libquarantine.dylib
0x7fff8e928000 - 0x7fff8e929ffb libremovefile.dylib (45)
<38D4CB9C-10CD-30D3-8B7B-A515EC75FE85> /usr/lib/system/libremovefile.dylib
0x7fff8e92a000 - 0x7fff8e942ff7 libsystem_asl.dylib (349.50.5)
<096E4228-3B7C-30A6-8B13-EC909A64499A> /usr/lib/system/libsystem_asl.dylib
0x7fff8e943000 - 0x7fff8e943ff7 libsystem_blocks.dylib (67)
<10DC5404-73AB-35B3-A277-A8AFECB476EB> /usr/lib/system/libsystem_blocks.dylib
0x7fff8e944000 - 0x7fff8e9d1fef libsystem_c.dylib (1158.50.2)
<E5AE5244-7D0C-36AC-8BB6-C7AE7EA52A4B> /usr/lib/system/libsystem_c.dylib
0x7fff8e9d2000 - 0x7fff8e9d5ffb libsystem_configuration.dylib
(888.60.2) <BECC01A2-CA8D-31E6-BCDF-D452965FA976>
/usr/lib/system/libsystem_configuration.dylib
0x7fff8e9d6000 - 0x7fff8e9d9fff libsystem_coreservices.dylib (41.4)
<7D26DE79-B424-3450-85E1-F7FAB32714AB>
/usr/lib/system/libsystem_coreservices.dylib
0x7fff8e9da000 - 0x7fff8e9f2fff libsystem_coretls.dylib (121.50.4)
<EC6FCF07-DCFB-3A03-9CC9-6DD3709974C6> /usr/lib/system/libsystem_coretls.dylib
0x7fff8e9f3000 - 0x7fff8e9f9fff libsystem_dnssd.dylib (765.50.9)
<CC960215-0B1B-3822-A13A-3DDE96FA796F> /usr/lib/system/libsystem_dnssd.dylib
0x7fff8e9fa000 - 0x7fff8ea23ff7 libsystem_info.dylib (503.50.4)
<611DB84C-BF70-3F92-8702-B9F28A900920> /usr/lib/system/libsystem_info.dylib
0x7fff8ea24000 - 0x7fff8ea46ff7 libsystem_kernel.dylib (3789.60.24)
<6E9E485F-91F6-36B7-A125-AE91DC978BCC> /usr/lib/system/libsystem_kernel.dylib
0x7fff8ea47000 - 0x7fff8ea8efe7 libsystem_m.dylib (3121.6)
<86D499B5-BBDC-3D3B-8A4E-97AE8E6672A4> /usr/lib/system/libsystem_m.dylib
0x7fff8ea8f000 - 0x7fff8eaadff7 libsystem_malloc.dylib (116.50.8)
<A3D15F17-99A6-3367-8C7E-4280E8619C95> /usr/lib/system/libsystem_malloc.dylib
0x7fff8eaae000 - 0x7fff8eb07ffb libsystem_network.dylib (856.60.1)
<369D0221-56CA-3C3E-9EDE-94B41CAE77B7> /usr/lib/system/libsystem_network.dylib
0x7fff8eb08000 - 0x7fff8eb11ff3 libsystem_networkextension.dylib
(563.60.2) <B021F2B3-8A75-3633-ABB0-FC012B8E9B0C>
/usr/lib/system/libsystem_networkextension.dylib
0x7fff8eb12000 - 0x7fff8eb1bff3 libsystem_notify.dylib (165.20.1)
<B8160190-A069-3B3A-BDF6-2AA408221FAE> /usr/lib/system/libsystem_notify.dylib
0x7fff8eb1c000 - 0x7fff8eb24fe7 libsystem_platform.dylib (126.50.8)
<897462FD-B318-321B-A554-E61982630F7E> /usr/lib/system/libsystem_platform.dylib
0x7fff8eb25000 - 0x7fff8eb2fff7 libsystem_pthread.dylib (218.60.3)
<B8FB5E20-3295-39E2-B5EB-B464D1D4B104> /usr/lib/system/libsystem_pthread.dylib
0x7fff8eb30000 - 0x7fff8eb33ff7 libsystem_sandbox.dylib (592.60.1)
<DC780631-BD23-36B1-9376-668619E18D25> /usr/lib/system/libsystem_sandbox.dylib
0x7fff8eb34000 - 0x7fff8eb35ff3 libsystem_secinit.dylib (24.50.4)
<F78B847B-3565-3E4B-98A6-F7AD40392E2D> /usr/lib/system/libsystem_secinit.dylib
0x7fff8eb36000 - 0x7fff8eb3dffb libsystem_symptoms.dylib (532.50.47)
<3390E07C-C1CE-348F-ADBD-2C5440B45EAA> /usr/lib/system/libsystem_symptoms.dylib
0x7fff8eb3e000 - 0x7fff8eb51ff7 libsystem_trace.dylib (518.60.2)
<6B145B10-5874-3E89-90CD-D370DB475BA1> /usr/lib/system/libsystem_trace.dylib
0x7fff8eb52000 - 0x7fff8eb57ffb libunwind.dylib (35.3)
<3D50D8A8-C460-334D-A519-2DA841102C6B> /usr/lib/system/libunwind.dylib
0x7fff8eb58000 - 0x7fff8eb81ff7 libxpc.dylib (972.60.2)
<1C9AF716-69DF-359F-85E9-7DFDE362F9A2> /usr/lib/system/libxpc.dylib
Sample analysis of process 10636 written to file /dev/stdout
I use ooRexx 5.0.0 dated may 20 2017 on Mac OS X Sierra, everything 64-bit mode
Hälsningar/Regards/Grüsse, P.O. Jonsson
Anfang der weitergeleiteten Nachricht:
Betreff: Wtr: [Bsf4oorexx-devel] High memory usage in ooRexx
Datum: 2. Juni 2017 um 17:17:37 MESZ
Hälsningar/Regards/Grüsse, P.O. Jonsson
Anfang der weitergeleiteten Nachricht:
Betreff: Aw: [Bsf4oorexx-devel] High memory usage in ooRexx
Datum: 2. Juni 2017 um 14:21:44 MESZ
Dear P.O., as this is a problem of ooRexx and not of BSF4ooRexx, I redirect
further postings to the appropriate
[email protected] (the ooRexx developer list). Your problem might have to do with
<https://sourceforge.net/p/oorexx/bugs/1450/> ("Performance
drops suddenly (once even a crash) "), which once even caused
ooRexx 5.0 to crash! The supplied (and submitted) crash
information shows at the top of the stack trace the following
line:
> rexx.dll!HashContents::entryValue(unsigned int position=2105385000) Line 282 C++
As there are approx. 40,000 objects explicitly created in this
supplied test case (pure ooRexx and a c++ library with external
Rexx functions), the position value of 2,105,385,000 (two
billion!) seems to have gone out of control at the point of this
crash.
Bug # 1450 test case causes performance to drop dramatically
while in parallel memory consumptions goes up, therefore
speculating that the same reason may be responsible for it.
---rony
On 01.06.2017 23:37, P.O. Jonsson
wrote:
Dear all,
I have a process that is sorting a large number of
items.
I first have a barrel shifter to keep the „top-5“
items for each item. This section uses mutable buffers and
iterates over all items (25-30 000 lines of text) and create
locally sorted text lines.
I then store this semi-sorted data in an array and
use a = a~StableSort to create a globally sorted data set, again
involving 25-30 000 items.
Most of the time this goes fine but occasionally the
rexx process starts to consume more and more memory until all
memory (in my case a Mac Pro with 48 GB per CPU, 96 GB in total)
is used up. After that the processing starts to become very
slow, increasing the memory usage over the maximum for a single
thread/CPU.
The program is to long and messy to enclose but here
is some pseudo code
Top01MB = .mutablebuffer~new
Top02MB = .mutablebuffer~new
...
a = .array~new
DO i=1 TO CountMB.0
...
DO j= 1 TO CountMB.i~Words
/* Store here only the Top-5 of the Iceberg */
SELECT
WHEN CountMB.i~Word(j) > Top01MB THEN
DO
Top05MB = Top04MB
Top04MB = Top03MB
Top03MB = Top02MB
Top02MB = Top01MB
Top01MB = CountMB.i~Word(j)
END
…
END j
a[i] = Top01MB Top02MB Top03MB Top04MB Top05MB
END i
Where should I look for memory leaks or memory
bloating code? How can I check where the program starts
consuming/ not freeing memory?
|
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Oorexx-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/oorexx-devel