Value-Klassen brauchen weiterhin Compiler-Unterstützung
Value Classes Still Need Compiler Sympathy
JEP 401, ein Meilenstein des Valhalla-Projekts, ist als Preview-Feature in JDK 28 integriert worden. Value-Klassen versprechen bessere Performance durch den Verzicht auf Identität, doch der Autor zeigt anhand von drei Beispielen, dass die JVM nicht immer von dieser Freiheit profitiert. So kann eine flache Darstellung bei manchen Methoden schneller sein, während andere eine Referenzdarstellung benötigen. Die daraus resultierenden Konvertierungen können sogar zu Leistungseinbußen führen, wie ein Fall aus der Praxis zeigt, bei dem die Umstellung auf Value-Records zu einer Verlangsamung führte. Der Artikel analysiert die Ursachen und gibt Einblicke in die aktuellen Grenzen der JVM-Optimierung.
Ein wohlmeinendes Programm kann die JVM in eine Situation bringen, in der eine flache Darstellung für einige Methoden schneller ist und eine Referenzdarstellung für andere – und wenn diese Methoden interagieren, ist die JVM gezwungen, zwischen den beiden Darstellungen zu konvertieren.