Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: object, header, memory, layout

Сколько памяти примерно занимает объект в Java?

Вопрос проверяет понимание внутреннего устройства объектов и накладных расходов по памяти в JVM.

Короткий ответ

Любой объект в Java имеет служебный заголовок.
Даже пустой объект занимает заметное количество памяти.
Обычно это 12–16 байт только на заголовок.
К этому добавляется память под поля и выравнивание.
Точный размер зависит от JVM и архитектуры.

Длинный ответ

Чтобы оценить размер объекта, нужно учитывать не только его поля.

Заголовок объекта

Определение:
Заголовок объекта — это служебная информация, которую JVM хранит для управления объектом.

В него обычно входят:

  1. Mark Word (хеш, GC, блокировки).

  2. Ссылка на класс (Class Pointer).

Типичные размеры:

  1. 32-bit JVM — ~8 байт.

  2. 64-bit JVM с Compressed Oops — ~12 байт.

  3. 64-bit JVM без сжатия — ~16 байт.

Поля объекта

К заголовку добавляются:

  1. Примитивные поля.

  2. Ссылки на другие объекты.

Размер зависит от:

  • типов полей

  • их количества

  • порядка объявления

Выравнивание памяти

JVM выравнивает объекты:

  1. Обычно по 8 байтам.

  2. Размер округляется вверх.

Пример:

class A {
    int x; // 4 байта
}

Фактический размер:

  1. Заголовок (12 байт)

  2. Поле int (4 байта)

  3. Выравнивание → итог 16 байт

Краткий вывод

Даже простой объект в Java занимает минимум 16 байт памяти, а точный размер зависит от JVM, архитектуры и выравнивания.

Уровень

  • Рейтинг:

    4

  • Сложность:

    7

Навыки

  • Java

    Java

Ключевые слова

#object

#header

#memory

#layout

Подпишись на Java Developer в телеграм