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.