Value Classes в JDK 28: почему компилятору все еще нужна поддержка

Value Classes Still Need Compiler Sympathy

JEP 401, важная веха проекта Valhalla, включен в JDK 28 как предварительная функция. Value-классы позволяют JVM выбирать подходящее представление данных, отказываясь от идентичности, что открывает новые возможности для оптимизации. Однако, как показывает автор на трех примерах, производительность не гарантирована: для изменяемых полей требуется атомарное обновление, что мешает уплощению; скаляризация и устранение аллокаций возможны только при определенных условиях; а при мегаморфных вызовах из-за стирания типов JVM вынуждена материализовывать значения, что может привести к регрессу. Автор призывает не считать value-классы панацеей и понимать их ограничения.

Я хочу, чтобы value-классы были не просто магией, поэтому сегодня я покажу, на что JVM способна прямо сейчас и где ее пределы.

Ещё за этот день

2026-08-26