Show TOC

Informationen in den Sichten Tabellen, Klassen, Programme und Experte in Memory InspectorLocate this document in the navigation structure

Vorgehensweise

In den Sichten Tabellen, Klassen und Programme in Memory Inspector werden Zusatzinformationen und Übersichten angezeigt, die spezifisch für den jeweiligen Objekttyp sind.

Wie die Ranglisten können Sie auch diese Sichten zum Vergleich von Speicherabzügen verwenden. Somit können Sie die Änderungen im Speicherverbrauch den einzelnen Objekttypen - internen Tabellen, Klassenobjekten oder Programmen - zuordnen.

Hinweis

Die Sicht Experte ist generell nur für SAP-interne Problemanalysen oder bei Interesse des Benutzers an der ABAP-Speicherverwaltung relevant.

Hinweis

Um anonyme Datenobjekte und Boxed Components isoliert ansehen zu können, wählen Sie die Rangliste oder die Typen-Rangliste. In diesen Sichten können Sie die Anzeige nach Objekttyp filtern.

Informationen in der Sicht Tabellen

In der Sicht Tabellen werden wie in anderen Sichten auch der allokierte und benutzte gebundene Speicher sowie die allokierte und benutzte Objektgröße für jede interne Tabelle angezeigt. (Bei internen Tabellen sind Objektgröße und Größe des gebundenen Speichers identisch.)

Folgende Details zu internen Tabellen finden Sie ebenfalls in der Sicht Tabellen:

  • Zeilen (allokiert): Damit eine Tabelle um Zeilen ergänzt werden kann, ohne dass die Tabelle im Speicher umgezogen werden muss, allokiert ABAP für jede interne Tabelle mehr Platz als benötigt. Hier sehen Sie, wie viele Zeilen jeder Tabelle in den allokierten Speicherplatz passen.

  • Zeilen (benutzt): In dieser Spalte sehen Sie, wie viele Tabellenzeilen sich aktuell im für die interne Tabelle allokierten Hauptspeicher befinden.

  • Belegung - Zeilen (%): Hier sehen Sie den berechneten Prozentsatz an allokiertem Speicher für Zeilen, der von den einzelnen Tabellen belegt wird. In der Tabellen sicht werden außerdem Belegungsprozentsätze für andere Speicherkennzahlen interner Tabellen berechnet.

  • Spaltenbreite: In dieser Spalte wird die Länge einer Tabelle in Byte angegeben. Diese Information wird auch in anderen Sichten geboten, ist aber hier schneller erkennbar.

  • RefCount: Hier sehen Sie die Anzahl der Referenzen ( Referenzzähler) auf die einzelnen internen Tabellen.

    Liegt mehr als eine Referenz vor, dann weist dies darauf hin, dass eine einzige Kopie eines Tabellenkörpers im Speicher von mehreren Referenzvariablen gemeinsam genutzt wird. (Siehe Wertesemantik im Abschnitt Konzepte: Hier finden Sie weitere Informationen zur Copy-On-Write-Strategie von ABAP zur Verwaltung des Inhalts interner Tabellen im Speicher.)

  • tabhld: Die ABAP-Laufzeit identifiziert interne Tabellen anhand des Tabellen-Handle, eine Ordnungszahl, die in dieser Spalte angezeigt wird.

    Anhand der Ordnungszahl können Sie beispielsweise eine Tabelle im Speicherabzug ihrer Entsprechung in einem ABAP-Kurzdump oder anderen Traces zuordnen, die dieses Tabellen-Handle verwenden. Zum Beispiel kann eine Tabelle in einem ABAP-Kurzdump mit dem internen Namen 'IT_<Ordnungszahl> zusätzlich zum Tabellennamen oder anstatt des Tabellennamens identifiziert werden.

Informationen in der Sicht Klassen

In der Sicht Klassen werden Klassenobjekte nach Klasse aggregiert, wobei die auch in anderen Sichten verfügbaren Zahlen zum gebundenen Speicher und zur Objektgröße angegeben werden. In der Sicht Klassen finden Sie zusätzlich jedoch die folgenden klassenspezifischen Details:

  • Anzahl Instanzen: In dieser Spalte wird die Anzahl der Instanzen (Klassenobjekte) angezeigt, die von einer bestimmten Klassendefinition erstellt wurden.

  • Instanzgröße: Dies ist eine interne Maßangabe, die geringe Bedeutung für die Speicherverbrauchsanalyse hat.

  • Klassenattribute: Hier sehen Sie die Anzahl der in einer Klasse definierten Attribute. Dies gibt Ihnen einen groben Hinweis auf die Größe und Komplexität der Klasse.

  • cladId/objhld: Die ABAP-Laufzeit identifiziert Klassenobjekte anhand einer Ordnungszahl, die in dieser Spalte angezeigt wird. Diese Zahl sehen Sie auch in der Klassennamensnotation, die Sie aus dem ABAP Debugger und dieser Transaktion kennen: {O:<ordinal number>... Die Ordnungszahl ist hier jedoch einfacher erkennbar.

Informationen in der Sicht Programme

In der Sicht Programme werden sämtliche Programme angezeigt, die in den internen Modus geladen wurden, der in einem Speicherabzug oder Speicherabzugsvergleich dargestellt ist. Der Begriff 'Programme' wird hier in seiner weitesten Bedeutung im Sinne aller ausführbaren ABAP-Einheiten benutzt, so dass Sie in der Sicht Programme nicht nur ABAP-Reports, sondern auch Funktionsgruppen und Class-Pools finden.

Sie können diese Programme nach Typ filtern:

  • Systemprogramme, die zur ABAP-Laufzeit und ABAP-Infrastruktur gehören. Dazu zählen Funktionsgruppen und Klassen, welche die Schnittstelle zwischen ABAP und ABAP-Kernel bereitstellen oder andere fundamentale Services und Interfaces implementieren.

    Die Programme sind nach Größe geordnet. Sie als Anwendungsprogrammierer haben wenig Einfluss auf diese Programme. Daher eignen sich diese Statistiken vor allem für eine Überprüfung, ob die ABAP-Infrastruktur nicht erheblich zu einem Speicherproblem beiträgt.

  • Anwendungsprogramme, d.h. Programme, die explizit vom Anwendungsprogramm geladen wurden, das im internen Modus gelaufen ist.

    Hier sehen Sie nicht nur das ABAP-Anwendungsprogramm, das im internen Modus gelaufen ist, sondern auch interne Programme, die von der ABAP-Laufzeit zur Unterstützung des Programms geladen wurden, wie Programme zur Tabellenverwaltung, für ALV-UI-Elemente usw.

    Auch hier haben Sie wenig Einfluss auf notwendige Infrastrukturprogramme. Sie können jedoch in dieser Sicht überprüfen, ob die ABAP-Infrastruktur zur Unterstützung einer ABAP-Anwendung eventuell Hauptverursacher eines Speicherproblems ist.

Die Sicht Programme bietet einen Überblick über die Speicherobjekttypen, die in jedem Programm enthalten sind. Für die Speicheranalyse sind diese Statistiken nur im Hinblick auf Anwendungsprogramme relevant, da Sie als Anwendungsentwickler nur auf diese Einfluss haben.

  • Globale Daten: Diese Zahl gibt die initiale statische Speicheranforderung eines Programms oder einer Klasse an. Sie umfasst den Speicherbereich für die globalen Daten eines Programms, einschließlich der statischen Attribute einer Klasse (aber ohne Klassenkonstanten). Bei tiefen Datentypen werden nur die Referenzen für die einzelnen Datenobjekte in diesem Bereich abgelegt, nicht jedoch die Objekte selbst.

  • Anzahl Instanzen: In dieser Spalte sehen Sie die Anzahl der Klassenobjekte, die im Kontext des Programms instanziiert wurden, einschließlich Instanzen lokaler Klassen in Class-Pools, Reports und Funktionsgruppen. Für einen ABAP-Report kann in Anzahl Instanzen ein Wert größer Null angezeigt werden, wenn das Programm zum Zeitpunkt des Speicherabzugs nicht-initiale Referenzen auf Objekte lokaler Klassendefinitionen oder auf Objekte globaler Klassendefinitionen enthielt.

    Der Wert in Anzahl Instanzen gibt Ihnen einen Hinweis auf die relative Größe des vom Programm referenzierten Speichers. Ein Programm mit 10 oder 20 Referenzen auf Objekte ist im Hinblick auf den Speicherverbrauch wahrscheinlich von geringer Bedeutung. Ein Programm, das Referenzen auf Tausende von Klassenobjekten hält, sollte jedoch wahrscheinlich analysiert werden.

  • Anzahl Tabellen: In dieser Spalte wird die Anzahl der internen Tabellen im Kontext des Programms angezeigt. Als Wertesemantik-Speicherobjekte zählen die Körper von Tabellen (also der Tabelleninhalt) früher oder später zum gebundenen Speicher eines Programms.

    Bei der Speicherverbrauchsanalyse ist die Anzahl der internen Tabellen in der Regel nur dann interessant, wenn sie sehr hoch ist oder wenn nur wenigen (großen) Tabellen sehr viel gebundener Speicher zuzurechnen ist. Im ersten Fall ist es sinnvoll festzustellen, warum das Programm mit so vielen Tabellen arbeiten muss und ob diese Tabellen unter Umständen stark anwachsen. Wenn nur wenige, aber große Tabellen vorhanden sind, sollten Sie untersuchen, warum diese Tabellen so groß sein müssen.

  • Anzahl Strings: Die Werte in dieser Spalte geben die Anzahl der Strings an, die im Kontext eines Programms deklariert sind. Als Wertesemantik-Speicherobjekte zählen die Inhalte von Strings früher oder später zum gebundenen Speicher eines Programms.

    Auch diese Statistik ist generell bei der Speicherverbrauchsanalyse nur dann interessant, wenn ein Programm sehr viele Strings benutzt. Dann sollten Sie untersuchen, ob die Strings viel Speicher verbrauchen können und ob das Programm tatsächlich mit so vielen Strings arbeiten muss.

  • Anzahl Datenobjekte: In dieser Spalte wird die Anzahl der in einem Programm deklarierten anonymen Datenobjekte angegeben. Als Referenzsemantik-Speicherobjekte zählen anonyme Datenobjekte nicht zum gebundenen Speicher eines Programms. Sie werden bei der Speicheranalyse dann interessant, wenn ihnen sehr viel Speicher zuzurechnen ist und/oder sie sehr zahlreich vorliegen.

  • progId: In dieser Spalte wird die Ordnungszahl angegeben, die jedem ABAP-Programm von der ABAP-Laufzeit zugewiesen wird. Ordnungszahl 0 identifiziert das Anwendungsprogramm, das initial gestartet wurde.

Hinweis

Um den Quelltext eines Programms anzuzeigen, öffnen Sie das Kontextmenü und wählen Im Editor anzeigen.