Wenn die Inline-Maximalgröße erhöht wird, ist mehr Speicher zum Ablegen der serialisierten Dokumente erforderlich. Daher muss in der Regel auch die JVM-Einstellung „Maximale Heap-Größe“ erhöht werden.
Bei einem stark ausgelasteten System, das eine Vielzahl von Dokumenten verarbeitet, kann der JVM-Heap-Speicher schnell erschöpft sein. Um Fehler wegen ungenügenden Speicherplatzes zu verhindern, muss die maximale JVM-Heap-Größe um einen Wert erhöht werden, der dem Produkt aus der Größe der Inline-Dokumente und der Anzahl der Dokumente entspricht, die in der Regel zu einem bestimmten Zeitpunkt ausgeführt werden.
Erhöhung der maximalen JVM-Heap-Größe = (Größe der Inline-Dokumente) x (durchschnittliche Anzahl verarbeiteter Dokumente).
Maximale JVM-Heap-Größe berechnen
In diesem Beispiel wurden die maximale JVM-Heap-Größe ursprünglich auf 512 MB und die Inline-Maximalgröße auf 64 KB festgelegt. Der Server muss für die gleichzeitige Ausführung von 10 Aufträgen konfiguriert werden, wobei jeder Auftrag 9 Eingabedateien und 1 Ergebnisdatei umfasst (d. h. 10 Dateien pro Auftrag und 100 gleichzeitig verarbeitete Dateien). Die Größe aller Dateien liegt unter 512 KB.
Damit alle Dateien als Inline-Dateien gespeichert werden können, muss die Inline-Maximalgröße auf mindestens 512 KB festgelegt werden.
Die erforderliche Erhöhung der maximalen JVM-Heap-Größe wird mit der folgenden Gleichung berechnet:
(512 KB) x (100) = 51200 KB oder 50 MB
Die maximale JVM-Heap-Größe muss daher um 50 MB erhöht werden, sodass sie insgesamt 562 MB beträgt.
Heap-Fragmentierung berücksichtigen
Wenn die Größe von Inline-Dokumenten auf einen hohen Wert festgelegt wird, erhöht sich dadurch das Fehlerrisiko wegen ungenügenden Speicherplatzes bei Systemen, die für die Heap-Fragmentierung anfällig sind. Zur Inline-Speicherung eines Dokuments muss im JVM-Heap-Speicher ein genügend großer zusammenhängender Speicherblock zur Verfügung stehen. Einige Betriebssysteme, JVMs und Löschprogrammalgorithmen (so genannte „Garbage Collectors“) sind für Fragmentierungen des Heap-Speichers anfällig. Die Fragmentierung reduziert die Größe des zusammenhängenden Heap-Speichers, sodass Fehler wegen ungenügenden Speicherplatzes auch dann auftreten können, wenn der insgesamt verfügbare freie Heap-Speicher eigentlich ausreichend ist.
Dies kann beispielsweise der Fall sein, wenn sich der JVM-Heap nach der Ausführung anderer Vorgänge auf dem Anwendungsserver in einem fragmentierten Zustand befindet und der Garbage Collector den Heap nicht genügend komprimieren kann, um große, zusammenhängende Speicherblöcke zu bilden. Fehler wegen ungenügenden Speicherplatzes können auch dann noch auftreten, wenn die maximale JVM-Heap-Größe an die erhöhte Inline-Maximalgröße angepasst wurde.
Um die Heap-Fragmentierung zu berücksichtigen, darf die Inline-Dokumentgröße auf nicht mehr als 0,1 % der gesamten Heap-Größe eingestellt werden. Mit einer maximalen JVM-Heap-Größe von 512 MB kann beispielsweise eine Inline-Maximalgröße von 512 MB x 0,001 = 0,512 MB oder 512 KB unterstützt werden.