SAP ADMIN COSTS DYN MEM OBJ - Guide
Get Example source ABAP code based on a different SAP table
GUIDELINE 6.50
Administration Costs of Dynamic Memory Objects
ABAP_BACKGROUND
Dynamic memory objects provide flexibility, but this comes at a price. The administration of these objects incurs internal costs, which are reflected in increased memory consumption, and in the worst case possibly far too high.
The total memory requirements of a dynamic memory object comprise the requirements of the objects themselves and the requirements of the administration data. The administration data consists of the reference, with a fixed size of 8 bytes, and a
The
Bei internen Tabellen kommt zu den Verwaltungsdaten im
Für jeden zusätzlichen sekundären Tabellenschlüssel erhöht sich der Speicherbedarf zusätzlich um den für die Sekundärschlüsselverwaltung (Sekundärindex oder sekundäre Hash-Verwaltung) benötigten
ABAP_RULE
Behalten Sie bei der Verwendung dynamisch verwalteter Speicherobjekte im Auge, dass neben dem Speicher für die eigentlichen Daten auch Speicher für Verwaltungszwecke benötigt wird. Dieser administrative Anteil sollte im Vergleich zu den Nutzdaten nicht zu groß werden.
ABAP_DETAILS
Obwohl die Speicherverwaltung dynamischer Speicherobjekte für den Entwickler weitestgehend unsichtbar ist und sich seiner direkten K ontrolle entzieht, sollten bei Design und Entwicklung die Verwaltungskosten im Auge behalten werden, sodass diese nicht unverhältnismäßig groß gegenüber dem eigentlichen Dateninhalt werden. Bei internen Tabellen setzen sich die Verwaltungsdaten beispielsweise aus einem von der Zeilenanzahl weitgehend unabhängigen Anteil sowie einem Anteil für jede Zeile zusammen. Daher sind sowohl Tabellen mit sehr wenigen als auch Tabellen mit sehr schmalen Zeilen ungünstig. Eine sortierte Tabelle von Integer-Zahlen verbraucht beispielsweise stets mehr Speicher für ihre Verwaltungsinformationen als für die eigentlichen Nutzdaten. Hash-Tabellen haben einen noch höheren Verwaltungsaufwand pro Zeile.
Daneben spielt die sogenannte
Ein solches Datenobjekt enthält viele tiefe Komponenten, von denen die meisten initial sind.
Ein solches Datenobjekt enthält viele tiefe Komponenten, von denen die meisten als Referenzvariablen oder über Sharing auf die gleichen Nutzdaten verweisen.
Ein solches Datenobjekt enthält viele tiefe Komponenten, die auf unterschiedliche Objekte, Strings oder interne Tabellen verweisen, die aber nur sehr wenige Nutzdaten enthalten oder leer sind.
Dünn und duplikativ besetzte komplexe Datenobjekte können in der Regel unbedenklich verwendet werden. Bei gering besetzten komplexen Datenobjekten kann sich aber leicht ein Missverhältnis von Verwaltungs- zu Nutzdaten ergeben. Für den massiven Einsatz gering besetzter Datenobjekte ist ABAP nicht geeignet.
Da die Zusatzkosten für Objekte am geringsten sind und da Objekte anders als dynamische Datenobjekte restlos aus dem Speicher gelöscht werden können, kann bei geringem Datenbestand eventuell auch eine Klassenverschalung als Alternative zur direkten Verwendung von internen Tabellen in Betracht gezogen werden. Dies ist eine Ausnahme zur Regel, dass
Latest notes:
Neben dem Verhältnis von Verwaltungs- zu Nutzdaten ist bei internen Tabellen auch das Verhältnis von dem für Nutzdaten
Beispiel
Ein Beispielprogramm