ABAP - Schlüsselwortdokumentation →  ABAP - Übersicht →  ABAP-Speicherorganisation - Übersicht → 

Allgemeine Speicherorganisation

Dieser Abschnitt beschreibt die Speicherorganisation eines AS ABAP aus der Sicht eines ABAP-Programms, d.h., auf welchen Speicher ein ABAP-Programm zugreifen kann. Eine allgemeinere und technisch genauere Beschreibung finden Sie im Abschnitt SAP Memory Management der Dokumentation von SAP NetWeaver im SAP Help Portal.

Die folgende Abbildung zeigt die allgemeine Speicherorganisation von ABAP-Programmen bis zur Ebene der internen Sitzung:

Abbildung

Applikationsserver

Die Applikationsschicht eines AS ABAP kann auf mehrere Applikationsserver verteilt sein. Wenn ein AS ABAP mehrere Applikationsserver hat, sind diese in der Regel auf verschiedenen Rechner instanziert. Es können aber auch mehrere Applikationsserver eines oder mehrerer AS ABAP auf einem Rechner instanziert sein. Die Transaktion SM51 zeigt eine Übersicht über die Applikationsserver des aktuellen AS ABAP und auf welchen Rechnern sie instanziert sind. Der Netzwerkname des Rechners auf dem der aktuelle Applikationsserver instanziert ist, kann in einem ABAP-Programm dem Systemfeld sy-host entnommen werden.

Jeder Applikationsserver hat Zugriff auf die zentrale Datenbank des AS ABAP. Jeder Applikationsserver hat sein eigenes Shared Memory. Die ABAP-Laufzeitumgebung verwendet das Shared Memory für Programme, Programmdaten und Puffer (z.B. bei der SAP-Pufferung). ABAP-Programme können im Shared Memory Shared Objects und Daten-Cluster ablegen.

Hinweis

Das Shared Memory ist eine vielfach verwendete und daher eventuell knappe Ressource, weshalb es bei der expliziten Ablage von Daten aus ABAP-Programmen möglicherweise zu Engpässen kommen kann.

Benutzersitzung

Durch das Anmelden an einem Applikationsserver wird eine Benutzersitzung geöffnet. Eine Anmeldung erfolgt u.a. über SAP GUI, die RFC-Schnittstelle oder das ICF (inklusive APC). Einer Benutzersitzung ist ein eigener Speicherbereich User Memory zugeordnet, in dem SPA/GPA-Parameter abgelegt werden können. Es gibt verschiedene Arten von Benutzersitzungen, in denen für die Ausführung von ABAP-Programmen teilweise unterschiedliche Regeln gelten:

Aus einer Benutzersitzung können programmgesteuert weitere Benutzersitzungen auf dem gleichen oder einem anderen Applikationsserver geöffnet werden, z.B.:

Die maximale Anzahl von Benutzersitzungen wird durch den Profilparameter rdisp/tm_max_no festgelegt. Der Profilparameter rdisp/rfc_max_login bestimmt welcher prozentuale Anteil davon über die RFC-Schnittstelle geöffnet werden können.

ABAP-Sitzung

Zu jeder Benutzersitzung wird eine ABAP-Sitzung geöffnet. Jeder ABAP-Sitzung ist ein eigener Speicherbereich ABAP Memory zugeordnet, in dem Daten-Cluster abgelegt werden können, auf welche die Programme einer Aufrufkette gemeinsam Zugriff haben und dessen Daten so lange wie die Top-Level-Transaktion der Aufrufkette erhalten bleiben.

Weitere ABAP-Sitzungen zu einer Benutzersitzung können u.a wie folgt geöffnet werden:

Pro Benutzersitzung sind maximal 16 ABAP-Sitzungen möglich. Die für ein System tatsächlich mögliche Anzahl wird durch den Profilparameter rdisp/max_alt_modes bestimmt, dessen Standardwert 6 ist.

Hinweis

Das ABAP Memory kann zur Datenübergabe zwischen den Programmen einer Aufrufkette verwendet werden.

Interne Sitzung

Durch jeden Aufruf eines ABAP-Programms wird eine neue interne Sitzung angelegt, in die das aufgerufene Programm geladen wird.

Der Speicherbereich einer internen Sitzung ist der so genannte Rollbereich, der in die Bereiche Heap und Stack unterteilt ist. Dort leben die veränderlichen Objekte des Programms. Die unveränderlichen Daten des Programms sind im so genannten PXA abgelegt. Der Rollbereich enthält Referenzen auf die erforderlichen Daten im PXA. Technisch gesehen sind Rollbereiche und der programmübergreifende PXA im Shared Memory des Applikationsservers abgelegt und werden dort vom SAP Memory Management verwaltet.

In einer ABAP-Sitzung kann es maximal neun interne Sitzungen geben, die immer zu einer Aufrufkette gehören. Die Daten des ABAP Memory sind immer einer Aufrufkette zugeordnet.

Auf 64-Bit-Plattformen kann eine interne Sitzung theoretisch bis zu 4 TB Speicher anfordern. Auf 32-Bit-Plattformen ist die theoretische Obergrenze 4 GB. Die praktische Obergrenze liegt in der Regel unter der theoretischen Obergrenze, da maximal der tatsächlich physikalisch installierte Hauptspeicher zur Verfügung steht und dieser unter allen Verwendern aufgeteilt wird.

Hinweis

Instanzen von Klassen leben, mit der Ausnahme von Shared Objects, in der internen Sitzung. Deshalb können keine Referenzen auf Objekte im ABAP Memory gespeichert werden.