Каков размер в памяти для данных примитивных типов в Java?

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

Ответ

Примитивные типы в Java имеют фиксированный, независимый от платформы размер, определенный спецификацией языка.

Таблица размеров: Тип Размер Диапазон значений
byte 1 байт от -128 до 127
short 2 байта от -32 768 до 32 767
int 4 байта от -2³¹ до 2³¹-1
long 8 байт от -2⁶³ до 2⁶³-1
float 4 байта приблизительно ±3.4e+38F (IEEE 754)
double 8 байт приблизительно ±1.8e+308 (IEEE 754)
char 2 байта символы Unicode (от u0000 до uffff)
boolean не определен Обычно 1 байт, но зависит от JVM и контекста.

Примеры и важные замечания:

int count = 100;      // Занимает 4 байта в стеке или внутри объекта.
double sum = 123.45;  // Занимает 8 байт.
boolean flag = true;  // Фактический размер определяется JVM.
  • В массивах: Размер вычисляется как (размер_элемента * количество) + заголовок_массива (обычно 12-16 байт).
  • Внутри объектов: Память может быть дополнена выравниванием (padding) для эффективного доступа процессора, поэтому общий размер объекта может быть немного больше суммы размеров его полей.