Show TOC

Arbeiten mit der Transaktion Memory InspectorLocate this document in the navigation structure

Vorgehensweise

Dokumentation: Die Transaktion Memory Inspector im Detail

Dokumentation: Memory Inspector im neuen ABAP Debugger

Memory Inspector starten und Speicherabzüge erstellen

Wenn Sie Memory Inspector zum ersten Mal starten, finden Sie eventuell einen leeren Bildschirm wie unten vor. Wenn dies der Fall ist, müssen Sie einen bzw. mehrere Speicherabzüge erstellen, bevor Sie mit der Speicherverbrauchsanalyse fortfahren können.

Abbildung 1: Starten von Memory Inspector

Erstellen Sie die Speicherabzüge vom gleichen Programm. Es ist natürlich nicht möglich, Abzüge verschiedener Programme zu vergleichen. Speicherabzüge werden in der Regel für folgende Zwecke erstellt:

  • Sie möchten prüfen, wie hoch der Speicherverbrauch eines Programms ist. Dazu würden Sie folgende Frage stellen: Verbraucht die Anwendung mehr Speicher als geplant oder erwartet? Erstellen Sie Speicherabzüge wenn möglich immer dann, wenn die Anwendung einen Stress- oder Skalierbarkeitstest durchläuft oder im Produktivbetrieb ausgeführt wird.

  • Sie möchten prüfen, ob Speicherlecks vorhanden sind und sich der Speicherverbrauch einer Anwendung im Laufe der Zeit unerwartet erhöht. In der Regel sind Speicherlecks das Ergebnis von Programmierfehlern: Dynamische ABAP-Speicherobjekte werden nicht freigegeben oder abgebaut, wenn sie nicht mehr benötigt werden.

Sicherlich werden Sie das Hauptaugenmerk auf die Speicheranalyse von ABAP-Anwendungen lenken, die kontinuierlich über lange Zeit hinweg laufen. Programme, die zur kontinuierlichen Verarbeitung von Arbeitsschritten geöffnet bleiben, oder Programme, die als Langläufer-Hintergrundjobs ausgeführt werden, sind beides geeignete Kandidaten für eine Überprüfung des korrekten Speicherverbrauchs.

Hingegen führen Programme, die nur diskret und kurz - als kurze Dialogtransaktionen oder zur Verarbeitung von Einzelanfragen - ausgeführt werden, nur selten zu Speicherverbrauchsproblemen. Bei Beendigung dieser Programme werden die Speicherressourcen freigegeben. Sie können auch mit den Transaktionen SM04 und STAD nach den Verursachern hohen Speicherverbrauchs suchen.

Hier sind einige Tipps für das Erstellen von Abzügen, die einen nützlichen Vergleich in Memory Inspector liefern.

  • Erstellen Sie Abzüge immer an den gleichen, genau definierten Stellen in einer ABAP-Anwendung. Sie können zum Beispiel einen Abzug vor der Verarbeitung eines Arbeitsschritts erstellen, den Arbeitsschritt verarbeiten und dann den zweiten Abzug vor der Verarbeitung des nächsten Arbeitsschritts erstellen.

  • Erstellen Sie keine Speicherabzüge, wenn eine Anwendung zum ersten Mal gestartet oder der erste Arbeitsschritt verarbeitet wird. Warten Sie, bis alle von der Anwendung verwendeten Programme und Ressourcen geladen wurden.

  • Achten Sie darauf, dass Sie vor dem Erstellen der einzelnen Abzüge jeweils genau dieselben Funktionen durchlaufen. Ansonsten vergleichen Sie Äpfel mit Birnen, und dann wird es sehr schwer, echte Speicherlecks zu erkennen.

Abbildung 2: Erstellen von Speicherabzügen zur Analyse in S_MEMORY_INSPECTOR

Es gibt auch noch andere Möglichkeiten, einen Speicherabzug zu erstellen:

  • Im neuen ABAP Debugger wählen Sie auf dem Einstiegsbild die Drucktaste Ersetze Werkzeug aus der Leiste am rechten Rand des Debugger-Bildschirms. Öffnen Sie dann den Ordner Speicherverwaltung und wählen Sie Speicheranalyse. Wählen Sie Services des Werkzeugs und anschließend Speicherabzug erzeugen.

  • Im klassischen ABAP Debugger wählen Sie Anfang des Navigationspfads Entwicklung Nächster Navigationsschritt Speicheranalyse Nächster Navigationsschritt Speicherabzug erzeugen Ende des Navigationspfads.

  • Geben Sie /hmusa in das Eingabefeld der Symbolleiste ein. Voraussetzung dafür ist, dass Sie sich in einer Transaktion befinden.

  • Rufen Sie in Ihrem Quelltext die statische Methode WRITE_MEMORY_CONSUMPTION_FILE der Systemklasse CL_ABAP_MEMORY_UTILITIES an der Stelle auf, an der Sie den Speicherabzug erstellen möchten.

Öffnen von Speicherabzügen für die Analyse

Doppelklicken Sie auf einen oder zwei Speicherabzüge, um sie für die Analyse zu öffnen. Memory Inspector benennt den älteren Abzug automatisch T_0 und den neueren Abzug T_1.

Wählen Sie einen Eintrag unter Speicherabzug aus oder verwenden Sie die Drucktasten in der obersten Fensterleiste, um zwischen der Analyse des älteren Abzugs (T_0), des neueren Abzugs (T_1) oder dem Vergleich beider Abzüge (T_1 - T_0) zu wechseln. Bei einem Vergleich zeigt Memory Inspector die Unterschiede immer mit Bezug auf den neueren Abzug - wie sich T_0 geändert hat und zu T_1 wurde.

Abbildung 3: Öffnen von Speicherabzügen und Auswahl der Sichten
Hinweis

In manchen Fällen meldet Ihnen das System, dass die Speicherabzüge aus verschiedenen Rollbereichen stammen und daher nicht verglichen werden können. Es kann vorkommen, dass der Memory Inspector den Vergleich von zwei Speicherabzügen verweigert. In diesem Fall wird obige Meldung angezeigt. Dieses Problem tritt auf, wenn zwei Speicherabzüge nicht miteinander verglichen werden können, weil beispielsweise interne IDs der Speicherobjekte nach einem Wechsel zu einem neuen Rollbereich und internen Modus geändert wurden. Erstellen Sie in diesem Fall neue Speicherabzüge.

Lesen der Speicheranalysesichten

Die folgenden Abschnitte erläutern, was Sie in den verschiedenen Analysesichten in Memory Inspector sehen. Die Analysewerkzeuge werden nur aktiv, wenn Sie einen oder zwei Speicherabzüge für die Analyse öffnen.

  • Die Übersicht zeigt den Speicherverbrauch eines Programms in den Hauptkategorien des ABAP-Speichers.

    In der Übersicht können Sie beim Abzugvergleich schnell erkennen, ob und wie sich der Speicherverbrauch geändert hat.

  • Der Dominatorbaum zeigt die dynamischen Speicherobjekte in einem ABAP-Programm zusammen mit den auf sie verweisenden Variablen an.

    Diese Sicht ähnelt inhaltlich der Rangliste. Es gibt jedoch zwei Unterschiede:

    1. Im Dominatorbaum können Sie keine Speicherabzüge vergleichen. Wenn Sie sich zuerst die Änderungen zwischen zwei Speicherabzügen anschauen möchten, beginnen Sie mit der Rangliste.

    2. Der Dominatorbaum zeigt die Referenzhierarchie bei Speicherobjekten.

      Wenn zum Beispiel ein Attribut eines Klassenobjekts ein Speicherobjekt referenziert, dann wird das Speicherobjekt als lokales untergeordnetes Objekt dargestellt, das im Geltungsbereich des Klassenobjekts liegt. Die Rangliste zeigt alle Speicherobjekte als Objekte der obersten Ebene an.

    Den Dominatorbaum verwenden Sie, wenn Sie die Keep-Alive-Beziehungen in referenzierten dynamischen Speicherobjekten analysieren möchten.

    Wenn Sie beispielsweise ABAP Objects analysieren, dann ist es mit dem Dominatorbaum weitaus einfacher für Sie, die Enthaltenseinbeziehungen zwischen Instanzen von Klassen und Speicherobjekten zu erkennen.

  • Die Rangliste und die Typen-Rangliste stufen die Speicherobjekte im ABAP-Programm nach ihrer Größe ein. Außerdem zeigen sie Referenzen auf Objekte an.

    Verwenden Sie die Rangliste alternativ zum Dominatorbaum, wenn Sie Speicherabzüge vergleichen möchten und Änderungen bei den Speicherobjekten insgesamt sowie in Einzelobjekten hervorheben möchten. Im Dominatorbaum können Sie keine Speicherabzüge vergleichen.

    Die Typen-Rangliste stuft Speicherobjekte in Gruppen gemäß ihrer definierten Typen im ABAP-Programm ein. In der Typen-Rangliste können Sie sehen, ob viele Instanzen eines kleinen Speicherobjekts zusammen viel Speicher verbrauchen.

  • Die Sichten Tabellen, Klassen und Programme bieten dedizierte Sichten gemäß den Typen der einzelnen Speicherobjekte. In der Sicht Tabellen können Sie zum Beispiel die im ABAP-Programm verwendeten internen Tabellen untersuchen, wobei für jede Tabelle die Gesamtzahl der Zeilen, der gebundene Speicher und der allokierte Speicher klar und übersichtlich aufgeführt wird.

  • Die Sichten Experte zeigen den allokierten Speicher im Speicherverwaltungssystem (Systemspeicher) und schlüsseln den allokierten Speicher nach den Speicherbereichen im Speicherverwaltungssystem auf. Diese Sichten können Sie ignorieren, es sei denn, der SAP Support fragt Sie nach Informationen aus diesen Sichten.

  • Die Sicht Objektzyklen (SZK) zeigt die starken Zusammenhangskomponenten unter den Speicherobjekten eines ABAP-Programms auf. SZKs können von Belang sein, wenn sie unnötigerweise große Mengen Speicher sperren.