К содержимому
Журнал QIO

Технологии3 мин чтения

Java 27 вышла 15 сентября: три изменения runtime, которые заметит прод

Java 27 вышла 15 сентября 2026 года и не является LTS-версией: основной релиз для продакшена по-прежнему Java 25, следующим LTS станет Java 29. Тем не менее три изменения runtime в OpenJDK 27 повлияют на память и CPU реальных приложений, поэтому их стоит знать до обновления.

Java 27 вышла 15 сентября: три изменения runtime, которые заметит прод

JEP 534: компактные заголовки объектов по умолчанию

Заголовок объекта на 64-битной JVM сокращается с 96–128 до 64 бит. Для приложений с миллионами мелких объектов это экономия heap на 10–20 %, но точная цифра зависит от структуры объектного графа: у одних сервисов выигрыш заметный, у других почти нулевой. Изменение включено по умолчанию, поэтому проявится сразу.

Два контейнера с толстой и тонкой крышками, сравнение размера заголовка
Заголовок объекта стал вдвое тоньше: 64 бита вместо 96–128.

Правило «не LTS — только на стенде» экономит нервы так же, как правило «не обновлять CMS на проде без копии». Java 27 стоит поставить на тестовый контур ради нагрузочных замеров, а не ради флажка «свежая версия».

JEP 523: G1 везде

Сборщик мусора G1 теперь используется по умолчанию во всех окружениях. Раньше маленькие контейнеры с одним процессором и небольшим объёмом памяти получали Serial GC. Для таких сервисов изменится потребление CPU и профиль пауз: G1 работает параллельно и предсказуемее по паузам, но требует больше ресурсов на фоне.

JEP 536: секреты скрываются в JFR

Java Flight Recorder автоматически фильтрует значения по ключам вроде password, token, secret, credential, api-key, private-key и client-secret. Это дополнительный слой защиты записей профилировщика, но не замена хранилищам секретов и управлению доступом.

Удалённые флаги и диагностика

Проверьте скрипты запуска: несколько опций окончательно удалены или переименованы.

  • Удалены: -noclassgc, -noverify, -verifyremote, -Xverify:none.
  • Переименован: -XX:InitiatingHeapOccupancyPercent → -XX:G1IHOP; -XX:UseCompressedClassPointers устарел.
  • Новая команда jcmd <pid> VM.security_properties показывает конфигурацию TLS.
  • Thread dump в JSON получил formatVersion 2 и числовые значения вместо строк, например "tid": 42.

Что делать перед обновлением

Прогнать нагрузочные тесты и сравнить расход памяти и профиль CPU до и после, особенно для контейнеров с ограниченными ресурсами. Убедиться, что скрипты запуска не используют удалённые флаги, а парсеры дампов понимают новый формат JSON. Если продакшен на LTS-ветке, Java 27 остаётся версией для стендов и раннего знакомства с изменениями, которые придут в Java 29.

Итог

Java 27 — не LTS, но её изменения runtime реальные: тоньше заголовки, G1 по умолчанию, скрытие секретов в JFR. Проверяйте на тестах, обновляйте скрипты, а продакшен держите на Java 25 до Java 29.

Источники

  1. Выходит Java 27 (Хабр, Spring АйО)
  2. OpenJDK: проект JDK 27
  3. OpenJDK: индекс JEP
  • Java
  • OpenJDK
  • JEP
  • G1 GC
  • JFR

Подписаться на журнал

Новые разборы о сайтах, SEO и ИИ выходят в журнале QIO. Подпишитесь в Google, по RSS или в Telegram, чтобы получать их первыми.

Читайте также

Чем можем помочь?
Обсудить проект