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

«Сколько памяти занимает примитив int в Java?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Примитивный тип int в Java всегда занимает 4 байта (32 бита). Этот размер фиксирован спецификацией языка Java и не зависит от операционной системы или разрядности JVM.

Пример:

int a = 1;
int b = 1_000_000;
int c = Integer.MAX_VALUE; // 2^31 - 1
// Каждая из этих переменных занимает в стеке ровно 4 байта.

Контекст использования:

  • Локальные переменные и параметры методов: Хранятся в стеке, по 4 байта на каждую.
  • Поля класса: Если поле int является частью объекта, оно добавляет к его размеру 4 байта (плюс возможное выравнивание).
  • Массивы: В массиве int[] данные хранятся непрерывным блоком. Размер массива вычисляется как: 12 байт (заголовок массива) + 4 * length.

Сравнение с Integer: Ключевое отличие от объекта-обертки Integer (который занимает ~16 байт) — отсутствие накладных расходов на заголовок объекта и необходимость в ссылке. Поэтому int значительно эффективнее по памяти и производительности.