Java 10 Leistungsverbesserungen

Java 10-Leistungsverbesserungen

1. Überblick

In diesem kurzen Lernprogramm werden die Leistungsverbesserungen erläutert, die mit der neuesten Java 10-Version einhergehen.

Diese Verbesserungen gelten für alle Anwendungen, die unter JDK 10 ausgeführt werden, ohne dass Codeänderungen erforderlich sind, um sie wirksam einzusetzen.

2. Parallele vollständige GC für G1

Der G1-Garbage-Collector ist seit JDK 9 der Standard. Der vollständige GC für G1 verwendete jedoch einen Single-Threaded-Mark-Sweep-Compact-Algorithmus.

Dies warchanged to the parallel mark-sweep-compact algorithm in Java 10, wodurch die Weltstoppzeit während der vollständigen GC effektiv reduziert wurde.

3. Datenfreigabe für Anwendungsklassen

Die in JDK 5 eingeführte gemeinsame Nutzung von Klassendaten ermöglicht die Vorverarbeitung einer Reihe von Klassen in eine gemeinsam genutzte Archivdatei, die zur Laufzeit speicherabgebildet werden kann, um die Startzeit zu verkürzen. Dies kann auch den dynamischen Speicherbedarf verringern, wenn mehrere JVMs die Datei gemeinsam nutzen gleiche Archivdatei.

CDS erlaubte nur das Laden der Bootstrap-Klasse, wodurch die Funktion nur auf Systemklassen beschränkt wurde. Application CDS (AppCDS) erweitert CDS, damit der integrierte Systemklassenlader (a.k.a., der „App-Klassenlader“), der integrierte Plattformklassenlader und benutzerdefinierte Klassenlader archivierte Klassen laden können. This makes it possible to use the feature for application classes.

Wir können die folgenden Schritte ausführen, um diese Funktion zu nutzen:

1. Rufen Sie die Liste der zu archivierenden Klassen ab

Der folgende Befehl speichert die von derHelloWorld -Applikation geladenen Klassen inhello.lst:

$ java -Xshare:off -XX:+UseAppCDS -XX:DumpLoadedClassList=hello.lst \
    -cp hello.jar HelloWorld

2. Erstellen Sie das AppCDS-Archiv

Der folgende Befehl erstellthello.js a unter Verwendung der Eingabehello.lst as:

$ java -Xshare:dump -XX:+UseAppCDS -XX:SharedClassListFile=hello.lst \
    -XX:SharedArchiveFile=hello.jsa -cp hello.jar

3. Verwenden Sie das AppCDS-Archiv

Der folgende Befehl startet dieHelloWorld -Anwendung mithello.jsa as-Eingabe:

$ java -Xshare:on -XX:+UseAppCDS -XX:SharedArchiveFile=hello.jsa \
    -cp hello.jar HelloWorld

AppCDS war eine kommerzielle Funktion in Oracle JDK für JDK 8 und JDK 9. Jetzt ist es Open Source und wird öffentlich zugänglich gemacht.

4. Experimenteller Java-basierter JIT-Compiler

Graal ist ein in Java geschriebener dynamischer Compiler, der in die HotSpot-JVM integriert ist. Es konzentriert sich auf hohe Leistung und Erweiterbarkeit. Dies ist auch die Grundlage für den experimentellen AOT-Compiler (Ahead-of-Time), der in JDK 9 eingeführt wurde.

Mit JDK 10 kann der Graal-Compiler als experimenteller JIT-Compiler auf der Linux / x64-Plattform verwendet werden.

Verwenden Sie die folgenden Optionen in der Java-Befehlszeile, um Graal als JIT-Compiler zu aktivieren:

-XX:+UnlockExperimentalVMOptions -XX:+UseJVMCICompiler

Beachten Sie, dass dies eine experimentelle Funktion ist und möglicherweise nicht unbedingt eine bessere Leistung als die vorhandenen JIT-Compiler erzielt wird.

5. Fazit

In diesem kurzen Artikel haben wir uns auf die Leistungsverbesserungsfunktionen in Java 10 konzentriert und sie untersucht.