JVM-Optimierung

Die JVM-Speicherverwaltungsfunktion (JVM = Java™ Virtual Machine) oder Garbage-Collection ermöglicht eine Optimierung der JVM-Leistungswerte.

Für dieses Produkt ist eine Java Java Virtual Machine (JVM) zur Ausführung und zur Unterstützung der Java-Anwendungen, die auf dem Server omplementiert sind, erforderlich. Sie können dieses Produkt konfigurieren, um die JVM-Nutzung des Systems zu verbessern. Die JVM stellt die Laufzeitausführungsumgebung für Java-Anwendungen bereit.

Wenn Sie die folgenden Parameter konfigurieren möchten, müssen Sie die Datei eclipse.ini bearbeiten. Diese Datei befindet sich im Produktinstallationsverzeichnis.

Tabelle 1. JVM-Optimierung
Parameter Standardeinstellung Beschreibung
-Xmx -Xmx1024m

Diese Einstellung steuert die maximale Größe des Java-Heapspeichers. Durch eine entsprechende Einstellung dieses Parameters können Sie den Systemaufwand für die Garbage-Collection reduzieren und so Antwortzeit und Durchsatz verbessern.

Der Parameter -Xmx begrenzt die Speicherkapazität, die vom Java-Heapspeicher zugeordnet werden kann. Der Standardwert für dieses Produkt beträgt 1 GB, um in der Entwicklungsumgebung die Bearbeitung umfangreicher und komplexer Arbeitsbereiche zu ermöglichen. Sie können einen kleineren Wert für -Xmx angeben. Von einem Wert unter '-Xmx512M' wird jedoch abgeraten. Ist der Wert für -Xmx zu niedrig, tritt bei diesem Produkt ein Fehler aufgrund abnormaler Speicherbedingungen auf.

Tipp: Verwenden Sie, soweit möglich, die Parameter '-Xmaf' und '-Xminf' anstelle des Parameters '-Xmx', um unnötige Fehler aufgrund abnormaler Speicherbedingungen zu vermeiden.
-Xmaxf -Xmaxf0.6

Diese Einstellung steuert den maximalen Anteil freien Speicherbereichs nach der Garbage-Collection.

Der Parameter -Xmaxf steuert die Erweiterung des Heapspeichers. Der Standardwert für dieses Produkt ist '-Xmaxf0.6'. '-Xmaxf0.6' weist die JVM an, den Speicher zu komprimieren, wenn der freie Speicherbereich über 60 % liegt. Wird -Xmaxf mit einem Wert unter 0,6 definiert, wird der Heapspeicher kleiner. In diesem Fall nimmt jedoch der Umfang der Garbage-Collection durch die JVM zu.

-Xminf -Xminf0.3

Diese Einstellung steuert den Mindestanteil freien Speicherbereichs nach der Garbage-Collection.

Der Parameter -Xminf steuert den Mindestwert an freiem Speicherplatz im Heap. Der Standardwert für dieses Produkt ist '-Xminf0.3'. Durch '-Xminf0.3' wird die JVM angewiesen, den Heapspeicher nach der Garbage-Collection zu erweitern, wenn der Heapspeicher weniger als 30 % an freiem Speicher umfasst.

Treten beim System Hauptspeicherprobleme auf, ist es möglicherweise sinnvoll, die Parameter mit '-Xmaxf0.4 -Xminf0.2' zu definieren oder sogar mit '-Xmaxf0.2 -Xminf0.1' noch engere Grenzwerte festzulegen.

Informationen zu einer automatischen Speicherreduzierung finden Sie in Speicherbelegung reduzieren.

Der Heapspeicher wird nach der Garbage-Collection erweitert, während weiterhin ein exklusiver JVM-Zugriff besteht. Die Erweiterung des Heapspeichers erfolgt in bestimmten Situationen.

Der aktive Teil des Heapspeichers wird bis zum Maximalwert erweitert, wenn eine der folgenden Bedingungen erfüllt ist:
  • Vom Garbage-Collector (GC) wurde nicht genügend Speicher für die Zuordnungsanforderung freigesetzt.
  • Der freie Speicherbereich liegt unter dem Mindestwert für freien Speicherbereich. Der minimal verfügbare Speicherbereich kann mit dem Parameter -Xminf definiert werden. Der Standardwert beträgt 30 %.
  • Garbage-Collection erfordert mehr Zeit als der maximale Schwellenwert für die Zeit. Der Schwellenwert für die Zeit wird mit dem Parameter -Xmaxt festgelegt. Der Standardwert beträgt 13%.

Nähere Informationen hierzu finden Sie in Heap-Erweiterung.

Der Heapspeicher wird nach der Garbage-Collection verkleinert, während weiterhin ein exklusiver JVM-Zugriff besteht. Die Verkleinerung des Heapspeichers erfolgt in bestimmten Fällen nicht. Es gibt darüber hinaus eine Situation, in der vor der Verkleinerung eine Komprimierung erfolgt.

Eine Verkleinerung erfolgt nicht, wenn eine der folgenden Bedingungen erfüllt ist:
  • Vom Garbage-Collector (GC) wurde nicht genügend Speicher für die Zuordnungsanforderung freigesetzt.
  • Der maximal zulässige Anteil des freien Speichers, der über den Parameter -Xmaxf definiert werden kann, beträgt 100 % (Standardwert: 60 %).
  • Der Heapspeicher wurde bei der Garbage-Collection dreimal nacheinander erweitert.
  • Es handelt sich um einen System.gc()-Aufruf und der Anteil des freien Speichers lag zu Beginn der Garbage-Collection unter dem mit -Xminf angegebenen Prozentsatz (Standardwert: 30 %) des aktiven Teils des Heapspeichers.
  • Liegt keine der oben angegebenen Bedingungen vor und ist mehr als der für -Xmaxf angegebene Prozentsatz an freiem Speicherbereich vorhanden, muss von der Garbage-Collection berechnet werden, wie der Heapspeicher zu verkleinern ist, um dem über -Xmaxf definierten Prozentsatz an freiem Speicherbereich zu entsprechen, ohne unter den Ausgangswert (-Xms) zu fallen. Diese Zahl wird bei einer 32-Bit-JVM auf einen Grenzwert von 512 Byte bzw. bei einer 64-Bit-JVM auf einen Grenzwert unter 1024 Byte abgerundet.
Vor der Verkleinerung erfolgt eine Komprimierung, wenn alle folgenden Bedingungen zutreffen:
  • Der aktuelle Garbage-Collection-Zyklus umfasste keine Komprimierung.
  • Am Ende des Heapspeichers ist kein freier Block verfügbar oder die Größe des freien Blocks am Ende des Hauptspeichers liegt unter 10 % des erforderlichen Verkleinerungsumfangs.
  • Beim letzten Garbage-Collection-Zyklus wurde vom Garbage-Collector keine Verkleinerung und Komprimierung vorgenommen.

Bei der Initialisierung ordnet die JVM den gesamten Heapspeicher in einem einzelnen zusammenhängenden Bereich des virtuellen Speichers zu. Der Umfang des zugeordneten Speichers wird durch die Einstellung für den Parameter -Xmx definiert. Zu keinem Zeitpunkt wird virtueller Speicherbereich des Heapspeichers erneut für das native Betriebssystem freigegeben. Wird der Heapspeicher verkleinert, erfolgt diese Verkleinerung innerhalb des ursprünglich zugeordneten virtuellen Speichers.

Ob physischer Speicher freigegeben wird, richtet sich nach den Möglichkeiten des nativen Betriebssystems. Dabei ist relevant, ob das native Betriebssystem Paging unterstützt, ob physischer Speicher im virtuellen Speicher festgeschrieben und die Commitoperation wieder aufgehoben werden kann und ob der Garbage-Collector diese Funktion verwendet. In diesem Fall kann die Commitoperation für den physischen Speicher bei einer Verkleinerung des Heapspeichers wieder rückgängig gemacht werden.

Der Umfang des virtuellen Speichers, der von der JVM belegt wird, verringert sich nicht. Möglicherweise erhöht sich der Umfang des freien physischen Speichers nach einer Verkleinerung des Heapspeichers. Das native Betriebssystem bestimmt, wie die nicht mehr festgeschriebenen Seiten verwendet werden sollen.

Wird Paging unterstützt, ordnet der Garbage-Collector physischen Speicher in dem Umfang zu dem ursprünglichen Heapspeicher zu, der über den Parameter -Xms angegeben ist. Zusätzlicher Speicher wird festgeschrieben, wenn der Umfang des Heapspeichers zunimmt.

Nähere Informationen hierzu finden Sie in Heapspeicherverkleinerung.


Feedback