Современный бэкенд — улучшения синтаксиса и производительности (2)

Современный бэкенд — улучшения синтаксиса и производительности (2)

Это раздел, посвящённый теории и принципам, второй лекции «Syntax & Performance Improvements (2)» из восьмой сессии части 1 курса [Modern Backend].

В этой лекции рассматриваются строгие правила и порядок инициализации, регулирующие Flexible Constructor Bodies в Java 25, а также конфигурация Compact Object Headers и многосторонний подход к оптимизации производительности Java 25.

📌 Основные рассматриваемые темы:

  • Ограничения, связанные с требованием использовать super/this в качестве первого оператора конструктора, и появление Flexible Constructors

  • Роль области пролога: объединение логики проверки параметров и предварительной обработки до вызова конструктора суперкласса

  • Строгие правила спецификации для области пролога:

  • Разрешено: проверять параметры и выбрасывать исключения, выполнять операции с локальными переменными и присваивать начальные значения собственным полям экземпляра объекта

  • Запрещено: читать поля экземпляра, вызывать методы экземпляра, передавать ссылку this во внешние объекты и создавать нестатические внутренние классы

  • Подводные камни порядка инициализации в иерархиях наследования (вызов переопределённого метода внутри конструктора суперкласса) и различия в поведении инициализации полей в прологе

  • Флаг активации Compact Object Headers (Compact Object Headers, JEP 519)-XX:+UseCompactObjectHeaders) и команда для проверки того, действительно ли он был применён

  • Границы и классификация улучшений производительности Java 25:

  • Ось времени (сокращение времени запуска и прогрева — кэш AOT, который будет рассмотрен позже, в части 3, вместе с GraalVM)

  • Ось памяти (сокращение использования памяти кучи, уменьшение частоты GC и пауз STW, а также повышение долгосрочной пропускной способности)

  • Формирование критериев диагностики узких мест производительности с точки зрения backend-инженера (время запуска по сравнению с использованием памяти кучи и нагрузкой на GC)

Сформировать глубокое понимание гибкости синтаксиса языка и принципов настройки памяти на уровне JVM.

Site footer