HeadlinesBriefing favicon HeadlinesBriefing.com

JDK 28 : Optimisations Classes de Valeur (JEP 401)

Hacker News •
×

Ce billet discute des fonctionnalités d'aperçu dans JDK 28, en particulier JEP 401, une étape majeure de Valhalla intégrée en tant que fonctionnalité d'aperçu. Les classes de valeur augmentent la capacité de communiquer la sémantique du programme et les opportunités d'optimisation disponibles pour la JVM. Cependant, la croyance selon laquelle les classes ordinaires fournissent un plancher de performance et que les classes de valeur ne peuvent pas aller en dessous est infondée.

Un programme bien intentionné peut forcer la JVM à convertir entre les représentations aplaties et de référence lorsque les méthodes interagissent, ce qui peut annuler les avantages. Le principal avantage d'optimisation des classes de valeur est d'abandonner l'identité, permettant à l'exécution de choisir des représentations appropriées, d'aplatir les valeurs pour éviter la poursuite de pointeurs et de scalariser les composants dans les registres ou sur la pile. L'analyse d'échappement devient triviale sans l'exigence d'identité.

L'immuabilité permet l'aplatissement ; JEP 539, Initialisation Stricte des Champs, permet à la JVM de compter sur un champ final initialisé avant que son objet englobant ne devienne observable. Comme un tel champ ne peut pas être mis à jour ultérieurement, la JVM peut utiliser une disposition aplatie non atomique sans risquer une affectation déchirée. Les champs mutables doivent préserver une affectation sans déchirure.

Si un champ mutable contient une valeur trop grande pour une mise à jour aplatie atomique, la JVM doit utiliser une disposition de référence. Considérez un enregistrement Four Longs avec 32 octets de charge utile ; trop grand pour une mise à jour aplatie atomique. Mais dans un enregistrement Envelope, la charge utile est un champ final strictement initialisé, permettant une disposition aplatie non atomique.

Si Envelope était mutable, la disposition revient à REGULAR pour maintenir la cohérence.