Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

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

Какие данные хранятся в объекте в куче помимо его полей?

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

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

В объекте в куче хранятся не только его поля.
Каждый объект содержит заголовок.
В заголовке хранится информация для синхронизации, GC и идентификации класса.
Эти данные нужны JVM для управления жизненным циклом объекта.
Без них объект не может корректно существовать.

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

Чтобы понять, что хранится в объекте, важно разделить пользовательские данные и служебные данные JVM.

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

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

В заголовок обычно входят:

1. Mark Word

В этой части хранятся:

  1. Состояние блокировки (synchronized).

  2. Хеш-код объекта.

  3. Информация для сборщика мусора.

  4. Флаги состояния объекта.

Размер:

  • зависит от JVM

  • обычно 8 байт на 64-bit JVM

2. Указатель на класс (Class Pointer)

Ссылка на метаданные класса:

  1. Описывает тип объекта.

  2. Используется для вызова методов.

  3. Нужна для instanceof и рефлексии.

Размер:

  • 4 или 8 байт (с учетом Compressed Oops)

Дополнительные данные

В зависимости от JVM могут добавляться:

  1. Padding для выравнивания.

  2. Служебные биты для оптимизаций.

Что не хранится в объекте

Важно понимать, что:

  1. Методы не хранятся в объекте.

  2. Статические поля принадлежат классу, а не объекту.

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

Помимо своих полей объект в куче содержит заголовок с данными для синхронизации, GC и определения типа, без которых JVM не может управлять объектом.

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • Java

    Java

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

#object

#header

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