Améliorations des performances de Java 10

Améliorations des performances de Java 10

1. Vue d'ensemble

Dans ce rapide didacticiel, nous aborderons les améliorations de performances apportées par la dernière version de Java 10.

Ces améliorations s'appliquent à toutes les applications exécutées sous JDK 10, sans aucune modification du code pour les exploiter.

2. Parallèle GC complet pour G1

Le ramasse-miettes G1 est celui par défaut depuis JDK 9. Cependant, le CPG complet pour G1 utilisait un seul algorithme fileté mark-sweep-compact.

Cela a étéchanged to the parallel mark-sweep-compact algorithm in Java 10, réduisant efficacement le temps d'arrêt du monde pendant le GC complet.

3. Partage de données de classe d'application

Le partage de données de classe, introduit dans JDK 5, permet de pré-traiter un ensemble de classes dans un fichier d’archive partagé, qui peut ensuite être mappé en mémoire au moment de l’exécution, afin de réduire le temps de démarrage, ce qui permet également de réduire l’encombrement de la mémoire dynamique lorsque plusieurs JVM partagent le même environnement. même fichier d'archive.

CDS n'autorisait que le chargeur de classes d'amorçage, limitant ainsi la fonctionnalité aux classes système. Application CDS (AppCDS) étend CDS pour permettre au chargeur de classes système intégré (a.k.a., le «chargeur de classes d'applications»), au chargeur de classes intégré et aux chargeurs de classes personnalisés de charger des classes archivées. This makes it possible to use the feature for application classes.

Nous pouvons utiliser les étapes suivantes pour utiliser cette fonctionnalité:

1. Récupérez la liste des classes à archiver

La commande suivante videra les classes chargées par l'applicationHelloWorld danshello.lst:

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

2. Créer l'archive AppCDS

La commande suivante créehello.js a avec l'entréehello.lst as:

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

3. Utilisez l'archive AppCDS

La commande suivante démarre l'applicationHelloWorld avec l'entréehello.jsa as:

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

AppCDS était une fonctionnalité commerciale d'Oracle JDK pour JDK 8 et JDK 9. Maintenant, il est open source et rendu public.

4. Compilateur JIT expérimental basé sur Java

Graal est un compilateur dynamique écrit en Java qui s'intègre à HotSpot JVM; il est axé sur la haute performance et l’extensibilité. C'est également la base du compilateur expérimental Ahead-of-Time (AOT) introduit dans JDK 9.

JDK 10 permet au compilateur Graal d'être utilisé comme compilateur JIT expérimental sur la plate-forme Linux / x64.

Pour activer Graal en tant que compilateur JIT, utilisez les options suivantes sur la ligne de commande java:

-XX:+UnlockExperimentalVMOptions -XX:+UseJVMCICompiler

Notez qu'il s'agit d'une fonctionnalité expérimentale et que nous ne pouvons pas nécessairement obtenir de meilleures performances que les compilateurs JIT existants.

5. Conclusion

Dans cet article rapide, nous nous sommes concentrés sur les fonctionnalités d'amélioration des performances de Java 10.