Speicherverbrauch 
Übersichten über Speicherverbräuche
Durch Wahl des Menüs Springen ® Zustandsanzeigen ® Speicherverbrauch wird ein Tabstrip mit folgenden Reitern angezeigt:
●
Speicherverbrauch –
gesamt
●
Speicherverbrauch –
Rangliste
●
Speicherverbrauch – SZK (Starke
Zusammenhangskomponenten)

Neben der direkten Anzeige des
Speicherverbrauchs im Debugger mit der Funktion Speicherverbrauch
bietet die Speicheranalyse
die Möglichkeit, Speicherabzüge abzuspeichern und mit dem Memory Inspector
zu analysieren.
Speicherverbrauchsanzeigen
·
Speicherverbrauch –
gesamt
...
Der Speicherverbrauch folgender
Speicherbereiche wird in Bytes angezeigt (siehe
Virtueller Adressraum
eines Workprozess):
Heap-Speicher
(privater Speicher)
Roll-Speicher
●
Benutzter Speicher (im Roll- oder
Heap-Speicher mit Daten belegter Speicher)
●
Bereits allokierter Speicher (im Roll-
oder Heap-Speicher bereits angeforderter Speicher)
●
Short-Speicher (Speicher für
Zwischenergebnisse, zum Beispiel aus dem Dynpro, der automatisch nach jedem
Dialogschritt abgeräumt wird.)
Paging-Speicher
·
Speicherverbrauch – Rangliste
Im Standard wird eine Liste aller verwendeten Datenobjekte angezeigt, sortiert
nach gebundenem Speicher, die automatisch aktualisiert wird.
·
Speicherverbrauch – SZK
Alle dynamischen Objekte (interne Tabellen, Strings, mit CREATE OBJECT erzeugte Objekte, mit CREATE DATA erzeugte anonyme Datenobjekte) eines internen Modus bilden die Knoten eines
gerichteten Graphen, dessen Kanten die dazugehörigen Referenzen sind. Für die
Analyse des Graphen ist es wichtig, die starken Zusammenhangskomponenten
(Abkürzung SZK) zu kennen. Eine SZK ist durch folgende Eigenschaft
charakterisiert: Für je zwei Elemente A und B einer SZK existiert ein Pfad im
Objektgraph von A nach B und von B nach A. Ein Pfad besteht immer aus mehreren
zusammenhängenden Kanten.
Es wird eine Rangliste des Speicherverbrauchs aller SZK des aktuellen internen
Modus angezeigt, wobei die Sortierung wahlweise nach referenziertem oder
gebundenem Speicher erfolgt. Die Liste umfasst nur diejenigen SZK, die aus
mindestens zwei Elementen bestehen.
Bedeutung der Spalten für Einzelanzeigen, Ranglisten und
SZK
·
Gebundener Speicher
Speicher, der beim vollständigen Löschen (bei internen Tabellen mit
FREE) frei wird. Zum angegebenen Objekt wird auch der Speicher derjenigen Objekte
gezählt, die exklusiv durch das vorliegende Objekt über Referenzen am Leben
gehalten werden. Enthält z.B. eine interne Tabelle Referenzen auf Datenobjekte
exklusiv und können diese nach dem Löschen der internen Tabelle vom
Garbage-Collector freigegeben werden, so tragen die so referenzierten Objekte
mit zum Gebundenen Speicher bei.
·
Referenzierter Speicher
Speicher, auf den das Datenobjekt verweist (eventuell über andere Datenobjekte
hinweg). Dieser Speicher wird beim Löschen des Datenobjekts nicht unbedingt
freigegeben, da noch andere Datenobjekte auf den Speicher verweisen können.
Der referenzierte Speicher ist immer größer oder gleich dem gebundenen
Speicher.
·
Benutzter Speicher
Speicher, der mit Nutzdaten belegt ist.
·
Allokierter Speicher
Speicher, der vom System reserviert wurde. Der allokierte Speicher ist immer
größer oder gleich dem benutzten Speicher.
·
Anzahl Instanzen
Diese Spalte erscheint bei Ranglisten nur nach einer Gruppierung und bei SZK.
Sie gibt die Anzahl der Instanzen einer Klasse, eines Datentyps oder der
Elemente einer SZK an.
·
Sharing
Diese Spalte betrifft nur interne Tabellen und Strings. Sie ist markiert,
falls für diese nach Zuweisungen
Sharing aktiv ist.
·
SZK-Markierung
Falls eine interne Tabelle, ein Objekt oder ein anonymes Datenobjekt Teil
einer SZK ist, erscheint in der Spalte rechts eine Drucktaste, deren Auswahl
die entsprechende SZK anzeigt.
Zusatzfunktionen für Ranglisten und SZK
·
Einstellungen
Durch Betätigung der Ikone Einstellungen
ändern wird ein Fenster angezeigt, in dem die Sortierreihenfolge (nach
gebundenem oder referenzierten Speicher), das Aktualisierungsverfahren
(automatisch oder manuell) und die Zahl der Einträge ausgewählt werden können.
Für die Rangliste des Speicherverbrauchs kann zuätzlich die Art der
Datenobjekte, deren Speicherverbrauch angezeigt wird, ausgewählt werden.
Ferner können Objekte und anonyme (mit CREATE DATA erzeugte) Datenobjekte in der Rangliste nach ihren Klassen oder Datentypen
gruppiert werden. Hierbei wird der Speicherbedarf der einzelnen Objekte und
einmalig der statische Speicher der Klasse zusammengezählt. Diese Funktion ist
dann sinnvoll, falls es zu einer Klasse oder einem Datentyp sehr viele
Instanzen mit jeweils geringem Speicherbedarf gibt.
·
Instanz-Liste
Diese Funktion steht bei Ranglisten nur nach einer Gruppierung zur Verfügung.
Durch Betätigung der Ikone Instanz-Liste werden alle Instanzen einer Klasse, eines
Datentyps oder alle Elemente einer SZK aufgelistet.
·
Referenzen finden
Durch Betätigung der Ikone Referenzen finden werden alle Referenzen auf ein
Objekt, ein anonymes Datenobjekt, einen String, eine interne Tabelle oder eine
SZK angezeigt.
Insbesondere werden bei Strings und internen Tabellen, für die nach
Zuweisungen Sharing aktiv ist, alle Variablen angezeigt, über die der
gemeinsame Datenbereich adressiert wird. Dazu gehören auch Variable anderer
ABAP-Programme, des gleichen internen Modus, die auf über DATA ... COMMON PART
deklarierte Strings und interne Tabellen zugreifen.
·
Sichern als lokale Datei
Diese Funktion steht nur bei Ranglisten zur Verfügung. Mit ihr kann ein
wählbarer Ausschnitt der Rangliste im Excel-Format in eine lokale Datei auf
dem Präsentationsserver gespeichert werden.
Speicheranzeige für einzelne Objekte und
Datenobjekte
Durch Wahl des Menüs Einstellungen ® Speicheranzeige ein/aus
wird die Speicheranzeige für einzelne Objekte und Datenobjekte eingeschaltet.
Die aktuellen Speicherwerte werden in der Einzelanzeige des jeweiligen
Objektes oder Datenobjektes angezeigt.
Durch Betätigung der Ikone Referenzen finden werden alle Referenzen auf ein Objekt, ein
anonymes Datenobjekt, einen String oder eine interne Tabelle
angezeigt.
Falls eine interne Tabelle, ein Objekt
oder ein anonymes Datenobjekt Teil einer SZK ist, erscheint eine Drucktaste,
deren Auswahl die entsprechende SZK anzeigt.

Für
interne Tabellen und Strings ist Sharing möglich. Das Sharing wird
systemintern über einen Referenzzähler abgebildet. Wenn dieser Zähler den Wert
1 enthält, so ist für die interne Tabelle oder den String kein Sharing aktiv.
In diesem Fall wird der Speicherverbrauch dem Knoten zugeschlagen, der diese
interne Tabelle oder den String referiert, das heißt, dass die Größe der
internen Tabelle oder des Strings im gebundenen Speicher des übergeordneten Knotens enthalten ist.