Grundlagen zur Speicherbelegung
Um Speicherlecks zu debuggen, müssen Sie die Mechanismen verstehen, die Speicherprobleme verursachen können, wie die JVM den LE-HEAP verwendet, wie die JVM den virtuellen z/OS® -Speicher verwendet und die möglichen Ursachen einer java.lang.OutOfMemoryError -Ausnahme.
Speicherprobleme können im Java™ -Prozess über die folgenden Mechanismen auftreten:
- Ein natives (C/C + +) Speicherleck, das zu einer erhöhten Nutzung des LE HEAP (nur 31-Bit-VMs) führt, was als übermäßige Nutzung von Subpool2, Schlüssel 8 oder Speicher und als übermäßige Arbeitsspeichergröße des Prozessadressraums angesehen werden kann.
- Ein Java-Objektleck im von Java verwalteten Heapspeicher. Der Verlust wird durch Programmierfehler in der Anwendung oder der Middleware verursacht. Diese Objektlecks führen zu einer Zunahme der Menge an Livedaten, die nach Abschluss eines Garbage-Collection-Zyklus verbleibt.
- Falsche Java-Heapspeichergröße. Beispielsweise kann die Größe des Heapspeichers für die von der Anwendung benötigte Speichermenge zu klein sein. Eine zu große Heap-Größe kann jedoch zu einem Mangel an MVS Private Area Storage für andere Komponenten, wie z. B. den nativen Thread-Stack, führen. Verwenden Sie die Option -Xmx , um die Größe des Heapspeichers für Ihre Anwendung und Umgebung zu optimieren.
- Unterzuteilung von Speicherbereichen. Dies ist beispielsweise der Fall, wenn die Parameter REGION, MEMLIMIT oder MAXTHREADS zu niedrig eingestellt sind oder wenn Speicherbereiche mit Speicherbereichen für andere Produkte, wie z. B. IBM® CICS®, in Konflikt stehen.