fckertube.com

  

Beste Artikel:

  
Main / So ändern Sie die Größe des Java-Speichers

So ändern Sie die Größe des Java-Speichers

Die Java Virtual Machine JVM ist eine virtuelle "Execution Engine" -Instanz, die die Bytecodes in Java-Klassendateien auf einem Mikroprozessor ausführt.

Die Seiten "Unterstützte Konfigurationen" unter http: Abhängig von Ihrer Anwendung stehen eine Reihe von GC-Schemata zur Verwaltung Ihres Systemspeichers zur Verfügung, wie unter Auswählen eines Garbage Collection-Schemas beschrieben.

Entscheidungen, die Sie über Solaris-Threading-Modelle treffen, können einen großen Einfluss auf die Leistung Ihrer JVM unter Solaris haben. Sie können innerhalb des Modells aus mehreren Threading-Modellen und verschiedenen Synchronisationsmethoden auswählen. Dies variiert jedoch von JVM zu JVM.

Threading "unter http: Wenn Sie beim Erstellen einer Domäne die Konfiguration anpassen, zeigt der Konfigurationsassistent eine Liste der von WebLogic Server installierten JDKs an. Aus dieser Liste wählen Sie die JVM aus, für die Sie Ihre Domäne ausführen möchten, und den Assistenten Konfiguriert die Oracle-Startskripte basierend auf Ihrer Auswahl.

Die Garbage Collection ist der Prozess der VM, bei dem nicht verwendete Java-Objekte im Java-Heap freigegeben werden. Die folgenden Abschnitte enthalten Informationen zum Optimieren der Garbage Collection Ihrer VM: Auf dem Java-Heap befinden sich die Objekte eines Java-Programms. Es ist ein Repository für lebende Objekte, tote Objekte und freien Speicher. Wenn ein Objekt von keinem Zeiger im laufenden Programm mehr erreicht werden kann, wird es als "Müll" betrachtet und kann gesammelt werden. Eine akzeptable Rate für die Speicherbereinigung ist anwendungsspezifisch und sollte nach Analyse der tatsächlichen Zeit und Häufigkeit der Speicherbereinigung angepasst werden.

Wenn Sie eine große Heap-Größe festlegen, ist die vollständige Speicherbereinigung langsamer, tritt jedoch seltener auf. Wenn Sie die Größe Ihres Heapspeichers entsprechend Ihren Speicheranforderungen festlegen, ist die vollständige Speicherbereinigung schneller, tritt jedoch häufiger auf. Das Ziel der Optimierung Ihrer Heap-Größe besteht darin, die Zeit zu minimieren, die Ihre JVM für die Speicherbereinigung benötigt, und gleichzeitig die Anzahl der Clients zu maximieren, die WebLogic Server zu einem bestimmten Zeitpunkt verarbeiten kann. Um eine maximale Leistung beim Benchmarking sicherzustellen, können Sie hohe Heap-Größenwerte festlegen, um sicherzustellen, dass die Speicherbereinigung nicht während des gesamten Benchmark-Laufs erfolgt.

Informationen zum Konfigurieren von WebLogic Server zur automatischen Erkennung, wenn der Heap-Speicherplatz knapp wird, und zur Behebung von Bedingungen mit geringem Arbeitsspeicher auf dem Server finden Sie unter Automatisches Protokollieren von Bedingungen mit niedrigem Arbeitsspeicher und Angeben von Werten für die Größe des Heapspeichers.

Abhängig davon, welche JVM Sie verwenden, können Sie aus mehreren Speicherbereinigungsschemata auswählen, um Ihren Systemspeicher zu verwalten. Beispielsweise sind einige Speicherbereinigungsschemata für einen bestimmten Anwendungstyp besser geeignet. Sobald Sie die Arbeitslast der Anwendung und die verschiedenen von der JVM verwendeten Garbage Collection-Algorithmen verstanden haben, können Sie die Konfiguration der Garbage Collection optimieren. Unter den folgenden Links finden Sie ausführliche Informationen zu den Speicherbereinigungsoptionen für Ihre JVM:.

Einige Hinweise zur Garbage Collection aus HP-Sicht finden Sie unter "Leistungsoptimierung von Java: Optimierungsschritte" unter http: Mit der ausführlichen Garbage Collection-Option verbosegc können Sie genau messen, wie viel Zeit und Ressourcen in die Garbage Collection investiert werden. Um die effektivste Heap-Größe zu ermitteln, aktivieren Sie die ausführliche Speicherbereinigung und leiten Sie die Ausgabe zu Diagnosezwecken in eine Protokolldatei um. Verwenden Sie die Option -verbosegc, um die Ausgabe der ausführlichen Speicherbereinigung für Ihre JVM zu aktivieren und sowohl den Standardfehler als auch die Standardausgabe in eine Protokolldatei umzuleiten.

Dadurch werden Thread-Dump-Informationen in den richtigen Kontext mit WebLogic Server-Informations- und Fehlermeldungen gestellt und ein nützlicheres Protokoll für Diagnosezwecke bereitgestellt. Verwenden Sie unter HPUX die folgende Option, um stderr stdout in eine einzelne Datei umzuleiten: Da die Ausgabe Zeitstempel für die Ausführung der Speicherbereinigung enthält, können Sie ableiten, wie oft die Speicherbereinigung erfolgt. Wie oft findet die Müllabfuhr statt? In der Weblogik. Wie lange dauert die Müllabfuhr? Die vollständige Speicherbereinigung sollte nicht länger als 3 bis 5 Sekunden dauern.

Was ist Ihr durchschnittlicher Speicherbedarf? Mit anderen Worten, worauf setzt sich der Haufen nach jeder vollständigen Speicherbereinigung zurück? Wenn der Heap immer zu 85 Prozent frei ist, können Sie die Heap-Größe verkleinern. Verwenden Sie eine möglichst große Heap-Größe, ohne dass Ihr System Seiten auf die Festplatte "tauscht". Die Menge an freiem RAM auf Ihrem System hängt von Ihrer Hardwarekonfiguration und den Speicheranforderungen für die Ausführung von Prozessen auf Ihrem Computer ab.

Wenden Sie sich an Ihren Systemadministrator, um Hilfe bei der Ermittlung der Menge an freiem RAM auf Ihrem System zu erhalten. Wenn Sie feststellen, dass Ihr System zu viel Zeit mit dem Sammeln von Müll verbringt, ist Ihr zugewiesener virtueller Speicher mehr als Ihr RAM verarbeiten kann, verringern Sie die Größe Ihres Heapspeichers.

In der Regel sollten Sie 80 Prozent des verfügbaren Arbeitsspeichers verwenden, der nicht vom Betriebssystem oder anderen Prozessen für Ihre JVM belegt wird. Wenn Sie feststellen, dass noch viel freier RAM verfügbar ist, führen Sie weitere Instanzen von WebLogic Server auf Ihrem Computer aus. Denken Sie daran, dass das Ziel der Optimierung Ihrer Heap-Größe darin besteht, die Zeit zu minimieren, die Ihre JVM für die Speicherbereinigung benötigt, und gleichzeitig die Anzahl der Clients zu maximieren, die WebLogic Server zu einem bestimmten Zeitpunkt verarbeiten kann.

JVM-Anbieter bieten möglicherweise andere Optionen zum Drucken umfassender Garbage Collection-Berichte an. Sie können beispielsweise die Option JRockit JVM -Xgcreport verwenden, um nach Abschluss des Programms einen umfassenden Garbage Collection-Bericht zu drucken. Weitere Informationen finden Sie unter "Anzeigen des Garbage Collection-Verhaltens" unter http: Die Systemleistung wird stark von der Größe des Java-Heaps beeinflusst, der der JVM zur Verfügung steht .

In diesem Abschnitt werden die Befehlszeilenoptionen beschrieben, mit denen Sie die Werte für die Heap-Größe definieren. Sie müssen bei jedem Start einer Instanz von WebLogic Server Werte für die Größe des Java-Heapspeichers angeben. Dies kann entweder über die Java-Befehlszeile oder durch Ändern der Standardwerte in den Beispielstart-Skripten erfolgen, die mit der WebLogic-Distribution zum Starten von WebLogic Server bereitgestellt werden.

Die Heap-Größen sollten so eingestellt werden, dass die von der VM maximal verwendete Speichermenge die Menge des verfügbaren physischen Arbeitsspeichers nicht überschreitet. Wenn dieser Wert überschritten wird, beginnt das Betriebssystem mit dem Paging und die Leistung nimmt erheblich ab. Die VM verwendet immer mehr Speicher als die Heap-Größe. Der für die interne VM-Funktionalität erforderliche Speicher, native Bibliotheken außerhalb der VM und permanenter Generierungsspeicher nur für die Sun VM: Bei Verwendung eines generellen Garbage Collection-Schemas sollte die Größe des Kindergartens nicht mehr als die Hälfte der gesamten Java-Heap-Größe überschreiten.

Stellen Sie in Produktionsumgebungen die minimale Heap-Größe und die maximale Heap-Größe auf denselben Wert ein, um zu vermeiden, dass VM-Ressourcen verschwendet werden, die zum ständigen Wachstum und Verkleinern des Heaps verwendet werden. Dies gilt auch für die Heap-Größen Sun oder Nursery Jrockit der neuen Generation. Obwohl JRockit automatische Heuristiken zur Größenänderung von Heaps bietet, sind diese nicht für alle Anwendungen optimal. In den meisten Situationen wird die beste Leistung erzielt, indem die VM für jede Anwendung optimiert wird, indem die in der folgenden Tabelle aufgeführten Optionen für die Heap-Größe angepasst werden.

Optimalerweise sollten Sie versuchen, den Kindergarten so groß wie möglich zu gestalten, während die Pausenzeiten für die Speicherbereinigung akzeptabel niedrig bleiben. Dies ist besonders wichtig, wenn Ihre Anwendung viele temporäre Objekte erstellt. Oracle empfiehlt, die minimale Heap-Größe -Xms gleich der maximalen Heap-Größe -Xmx zu setzen, um die Speicherbereinigung zu minimieren. Das Festlegen eines niedrigen maximalen Heap-Werts im Vergleich zur Menge der Live-Daten verringert die Leistung, indem häufige Speicherbereinigungen erzwungen werden.

Zu diesem Zweck läuft der Engpassdetektor von Anfang an mit einer höheren Frequenz und senkt dann allmählich seine Frequenz. Diese Option weist JRockit außerdem an, den verfügbaren Speicher aggressiv zu verwenden. Wenn Sie beispielsweise eine WebLogic Server-Instanz über eine Java-Befehlszeile starten, können Sie die Werte für die Größe des JRockit VM-Heapspeichers wie folgt angeben:

Die Standardgröße für diese Werte wird in Byte gemessen. Fügen Sie den Buchstaben 'k' oder 'K' an den Wert an, um Kilobyte anzugeben, 'm' oder 'M', um Megabyte anzugeben, und 'g' oder 'G', um Gigabyte anzugeben. Im obigen Beispiel werden den Nursery-Heap-Größen 10 Megabyte Speicher und den minimalen und maximalen Heap-Größen für die in der JVM ausgeführte WebLogic Server-Instanz 512 Megabyte Speicher zugewiesen.

Oracle bietet weitere Befehlszeilenoptionen, um die Leistung Ihrer JRockit-VM zu verbessern. Ausführliche Informationen finden Sie unter "Befehlszeilenreferenz" unter http: Sie erzielen die beste Leistung, indem Sie jede Anwendung einzeln optimieren. Das Konfigurieren der in der folgenden Tabelle aufgeführten Optionen für die Größe des Java HotSpot VM-Heapspeichers beim Starten von WebLogic Server erhöht jedoch die Leistung für die meisten Anwendungen. Diese Optionen können je nach Architektur und Betriebssystem unterschiedlich sein.

In der Dokumentation Ihres Anbieters finden Sie plattformspezifische JVM-Optimierungsoptionen. Tabelle 5-3 Optionen für die Größe des Java-Heapspeichers. Stellen Sie -XX: NewSize in der Regel auf ein Viertel der Größe der Heap-Größe ein.

Erhöhen Sie den Wert dieser Option für eine größere Anzahl kurzlebiger Objekte. Stellen Sie sicher, dass Sie die neue Generation erhöhen, wenn Sie die Anzahl der Prozessoren erhöhen. Die Speicherzuweisung kann parallel sein, die Speicherbereinigung ist jedoch nicht parallel.

Das Gebiet der neuen Generation ist in drei Untergebiete unterteilt: Eden und zwei gleich große Überlebensräume. Versuchen Sie, diesen Wert auf 8 zu setzen, und überwachen Sie dann Ihre Speicherbereinigung. Legen Sie in der Regel die anfängliche Heap-Größe -Xms gleich der maximalen Heap-Größe -Xmx fest, um die Speicherbereinigung zu minimieren. Siehe http: Wenn Sie beispielsweise eine WebLogic Server-Instanz über eine Java-Befehlszeile starten, können Sie die HotSpot VM-Heap-Größenwerte wie folgt angeben:

Im obigen Beispiel werden 128 MB Speicher für die Heap-Größe der neuen Generation und die maximale Größe der neuen Generation sowie 512 MB Speicher für die minimale und maximale Größe des Heapspeichers für die in der JVM ausgeführte WebLogic Server-Instanz zugewiesen. Sun bietet andere Standard- und Nicht-Standard-Befehlszeilenoptionen, um die Leistung Ihrer VM zu verbessern. Wie Sie diese Optionen verwenden, hängt davon ab, wie Ihre Anwendung codiert ist. Testen Sie sowohl Ihre Client- als auch Ihre Server-JVMs, um festzustellen, welche Optionen für Ihre bestimmte Anwendung besser geeignet sind.

Das Sun Microsystems-Dokument enthält Informationen zu den Befehlszeilenoptionen und Umgebungsvariablen, die sich auf die Leistungsmerkmale der Java HotSpot Virtual Machine auswirken können. Mit WebLogic Server können Sie die vom Server beobachteten Bedingungen mit niedrigem Arbeitsspeicher automatisch protokollieren. WebLogic Server erkennt zu wenig Speicher, indem der verfügbare freie Speicher in einem Zeitintervall eine festgelegte Anzahl von Malen abgetastet wird.

Am Ende jedes Intervalls wird ein Durchschnitt des freien Speichers aufgezeichnet und mit dem Durchschnitt verglichen, der im nächsten Intervall erhalten wurde. Wenn der Durchschnitt nach einem Beispielintervall um einen vom Benutzer konfigurierten Betrag sinkt, protokolliert der Server eine Warnmeldung zu wenig Speicher in der Protokolldatei und setzt den Serverzustandsstatus auf "Warnung". Möglicherweise müssen Sie die vollständige Speicherbereinigung manuell anfordern Administrationskonsole.

Denken Sie dabei daran, dass die Speicherbereinigung kostspielig ist, da die JVM häufig jedes lebende Objekt auf dem Heap untersucht.

(с) 2019 fckertube.com