Search
Write a publication
Pull to refresh
124.15

JEP 519: Компактные заголовки объектов — теперь официально

Level of difficultyEasy
Reading time1 min
Views2K

Команда Spring АйО представляет одну немаловажную фичу Java 25: компактные заголовки объектов (Compact Object Headers). Это позволит JVM экономить память и ускоряться без вмешательства в код.

Что это такое?

У каждого объекта в Java есть заголовок — служебные данные, которые JVM использует для синхронизации, GC и т.д. Обычно заголовок занимает 96 бит (12 байт) на 64-битных платформах.

С JEP 450 в Java 24 появится экспериментальная опция сжать заголовки до 64 бит (8 байт). JEP 519 делает это стабильной, проверенной фичей, которую можно безопасно включать прямо в проде.

Зачем?

  • Минус 22% памяти в SPECjbb2015

  • Минус 8% CPU в среднем

  • Минус 15% сборок мусора в G1 и Parallel GC

  • +10% скорость парсинга JSON

Для распределённых систем, высоконагруженных сервисов и микросервисов — это простой способ сэкономить ресурсы без переписывания кода.

Как включить?

В Java 25 больше не понадобится флаг 

-XX:+UnlockExperimentalVMOptions 

Теперь достаточно:

java -XX:+UseCompactObjectHeaders ... 

Пруфы?

  • Протестировано в проде на сотнях сервисов Amazon.

  • Прогнано по полному тест-сьюту JDK в Oracle.

  • Отдельные компании уже бэкпортят фичу на JDK 21 и 17.

Что важно знать?

  • По умолчанию выключено.

  • Не влияет на функциональность приложения.

  • Может потребовать внимания в будущем, если другие фичи потребуют больше битов в заголовке (но для этого есть решения в рамках проектов Valhalla и Lilliput).

Обсудим в комментариях? 👇


Присоединяйтесь к русскоязычному сообществу разработчиков на Spring Boot в телеграм — Spring АйО, чтобы быть в курсе последних новостей из мира разработки на Spring Boot и всего, что с ним связано

Tags:
Hubs:
+11
Comments3

Articles

Information

Website
t.me
Registered
Employees
11–30 employees