Heim  >  Artikel  >  Java  >  Zusammenfassung und Analyse der JVM-Optimierungstechniken

Zusammenfassung und Analyse der JVM-Optimierungstechniken

高洛峰
高洛峰Original
2017-01-23 10:15:231165Durchsuche

Dies ist ein technischer Artikel. Wenn Sie nach Artikeln über GC oder die Anpassung der inneren Reinheit suchen, lesen Sie bitte meine anderen Artikel. Da dies eine Zusammenfassung der JVM-Optimierung ist, werde ich keinen Unsinn reden. Die folgenden Methoden wurden aus verschiedenen Aspekten zusammengestellt:
1. Aktualisieren Sie die JVM-Version. Wenn 64-Bit verfügbar ist, verwenden Sie eine 64-Bit-JVM.
Im Grunde gibt es nichts zu erklären, es ist sehr einfach, die JVM auf die neueste Version zu aktualisieren. Wenn Sie noch JDK1.4 oder sogar eine frühere JVM verwenden, müssen Sie zunächst ein Upgrade durchführen. Da es sich bei der JVM von 1.4->1.5->1.6 nicht nur um ein Upgrade der Versionsnummer oder das bloße Hinzufügen einer Reihe neuer Sprachfunktionen handelt, ist das so einfach. Stattdessen wurden erhebliche Verbesserungen an der JVM vorgenommen. Jedes Versions-Upgrade bringt enorme Leistungssteigerungen mit sich. Vor allem, wenn SUN erkennt, dass Java für einen Vertrauten alles ist (etwas übertrieben, aber sogar die Lagernummer wurde auf JAVA geändert, haha). Wenn Sie häufig das JVM-Forum von SUN besuchen, werden Sie feststellen, dass es tatsächlich so viele Probleme mit der JVM gibt. Wenn Sie aus verschiedenen Gründen kein Upgrade auf 1.6 durchführen können, können Sie ein Upgrade auf die neueste Version dieser Version durchführen.
2. Wählen Sie einen korrekten GC (Gargage Collection).
Denn wenn das JAVA-Programm GC ist, wird das aktuelle Programm gestoppt. Insbesondere während der vollständigen GC bleibt es lange erhalten. Im Allgemeinen ist dies für GUI-Programme schwierig zu akzeptieren (denken Sie daran, wann Eclipse angehalten wird). Nach JAVA5 gibt es mehrere GC-Typen. Sie können die für Sie passende auswählen. Es gibt vier Arten von Serial Collector, Parallel Collector, Concurrent Collector und Train Collector (veraltet). Bei letzterem wird die parallele Sammlung mehrmals verwendet, sodass sie theoretisch effizienter ist (Sie müssen mehr als 2CUP haben, aber jetzt wird Multi-Core immer beliebter, haha). Tipp: Erhöhen Sie nach dem Ändern des GC-Typs die Menge des JVM-Speichers entsprechend.
3. Stellen Sie die Speichergröße richtig ein. Stellen Sie die Größe jedes Bereichs (jung, alt, dauerhaft) im JVM-Heap richtig ein.
Dies ist die schwierigste Anpassung, da sich diese Anpassung direkt auf die Effizienz der GC auswirkt. Und da die Typen jedes Programms unterschiedlich sind, gibt es keine universellen Daten. Zusätzlich zu einigen allgemeinen Regeln müssen Sie zur sorgfältigen Anpassung Tools (jstat, jvmstat, jconsole usw.) verwenden. Im Folgenden werden einige häufig verwendete Richtlinien aufgeführt. Verwenden Sie normalerweise die folgenden Parameter, um -Xms -Xmx-XX:MaxPermSize anzupassen.
3.1 Durch Erhöhen des Werts von -XX:NewRatio (NewSize/MaxNewSize) wird die Anzahl junger GCS verringert, aber die Zeit alter GCS verlängert.
3.2 Methode zur Erhöhung des normalen GC (Reduzierung des vollständigen GC). Erhöhen Sie die Größe des jungen Bereichs (bis zu 40 %) und überdimensionieren Sie den Überlebensbereich. Behalten Sie mehr Objekte in der jungen Generation.
4. Reduzieren Sie die Verwendung von Klassen, achten Sie auf das Laden und Entladen von Klassen und reduzieren Sie die Anzahl der JSP-Seiten.
Klassen sind eigentlich Objekte und werden direkt im Perm-Bereich zugewiesen. Selbst ein vollständiger GC sammelt sie selten. JSP wird mit dem gleichen Effekt auch dem Perm-Bereich zugeordnet. Wenn perm zu groß ist und den Wert XX:MaxPermSize überschreitet, tritt eine OutOfMemoryError: PermGen-Speicherausnahme auf. Die Lösung besteht darin, den Wert -XX:MaxPermSize zu erhöhen.
5. Vermeiden Sie die Verwendung von -Xnoclassgc
6. Wenn es sich um ein RMI-Programm handelt, achten Sie auf die Anpassung der RMI-DGC-Zeit.
Im Folgenden finden Sie einige Dinge, auf die Sie beim Schreiben von Programmen achten sollten. GC kann auch reduziert werden, um die JVM-Leistung zu verbessern.
1. Verwenden Sie nicht die Methode System.gc().
Weil es eine vollständige GC generiert.
2. Ordnen Sie so wenige große temporäre Objekte (mit kurzen Lebenszyklen) wie möglich zu.
Sie können direkt dem alten Bereich zugeordnet werden, der nur von Full GC erfasst wird.
3. Vermeiden Sie die Verwendung der finalize()-Methode.
finalize() erhöht die Belastung von GC. Verwenden Sie stattdessen java.lang.ref.

Weitere Artikel zur Zusammenfassung und Analyse von JVM-Optimierungstechniken finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn