Hallo zusammen,
ich muss ein Heap memory Problem auf der AS/400 analysieren. Dazu verwende ich folgende PEX Befehle:
Es werden nun ein paar Outfiles erzeugt, die per SQL gejoint werden können, um die Heap-Segment Adresse, die allokierte Größe und den Aufrufstapel zu ermitteln:Code:ADDPEXDFN DFN(HEAP) TYPE(*TRACE) JOB((123456/MAT/MAT0 *ALL)) TASK(*ALL) MAXSTG(4000000) TRCTYPE(*SLTEVT) SLTEVT(*YES) MCHINST(*NONE) STGEVT((*ACTGRPHEAP))STRPEX SSNID(HEAP)- Aktion ausführen - ENDPEX SSNID(HEAP) DTALIB(MATTRC) RPLDTA(*YES)
Mein Problem ist nun, dass die Datei QAYPEHEAP nur 5 Felder zur Speicherung der letzten 5 Aufrufstapeleinträge enthält. Weiß jemand, wie man mehr Aufrufstapeleinträge erhält?Code:CREATE VIEW mattrc/heapv1 AS (SELECT a.QRECN, a.QHPASA, a.QHPASZ, a.QHPOPR, a.QHPRET, (SELECT QPRPNM FROM mattrc/QAYPEPROCI WHERE QHPCK1 = QPRKEY) cs1, QIASTMT1, (SELECT QPRPNM FROM mattrc/QAYPEPROCI WHERE QHPCK2 = QPRKEY) cs2, QIASTMT2, (SELECT QPRPNM FROM mattrc/QAYPEPROCI WHERE QHPCK3 = QPRKEY) cs3, QIASTMT3, (SELECT QPRPNM FROM mattrc/QAYPEPROCI WHERE QHPCK4 = QPRKEY) cs4, QIASTMT4, (SELECT QPRPNM FROM mattrc/QAYPEPROCI WHERE QHPCK5 = QPRKEY) cs5, QIASTMT5 FROM mattrc/QAYPEHEAP a INNER JOIN mattrc/QAYPETIDX c ON a.QRECN = c.QRECN LEFT JOIN mattrc/QAYPEIAD d ON a.QRECN = d.QRECN);/* Zeige alle mallocs zu deren Adresse keinfreeausgeführt wurde */SELECT *FROM mattrc/heapv1WHERE QHPOPR = 0AND QHPASA NOT IN(SELECT QHPASA FROM mattrc/heapv1WHERE QHPOPR = 1);
Wie analysiert ihr Heap memory leak Probleme auf der AS/400?
Auf Windows kann man dazu recht bequem WPA (Windows Performance Analyzer) verwenden.
Viele Grüße
Matthias
![[NEWSboard IBMi Forum]](images/duke/nblogo.gif)



Mit Zitat antworten

Bookmarks