Компактные заголовки объектов
Уменьшение размера заголовков объектов вдвое для повышения плотности хранения и эффективности кэша.
Сравнение кода
✕ Java 8
// Default: 128-bit object header // = 16 bytes overhead per object // A boolean field object = 32 bytes! // Mark word (64) + Klass pointer (64)
✓ Java 25
// -XX:+UseCompactObjectHeaders // 64-bit object header // = 8 bytes overhead per object // 50% less header memory // More objects fit in cache
Заметили проблему в этом коде? Сообщите нам.
Почему современный подход лучше
Заголовки меньше на 50 %
8 байт вместо 16 на каждый объект.
Лучшее использование кэша
Больше объектов помещается в строки кэша процессора.
Более высокая плотность
Больше объектов в том же объёме кучи.
Старый подход
128-битный заголовок
Современный подход
64-битный заголовок
Начиная с JDK
25
Сложность
Продвинутый
Поддержка JDK
Компактные заголовки объектов
Доступно
Финализировано в JDK 25 LTS (JEP 519, сентябрь 2025).
Как это работает
Компактные заголовки объектов сокращают накладные расходы на каждый объект со 128 бит до 64 бит на 64-битных платформах. Это экономит память и улучшает использование кэша, особенно для приложений с большим количеством небольших объектов.
Связанная документация