Как примитив оказывается в стеке, а как в куче?

Размещение примитива зависит от контекста: локальная переменная относится к frame вызова, поле объекта — к данным объекта, элемент int[] — к массиву в heap. Примитив не означает «всегда стек».

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

Что ответить на собеседовании

Размещение примитива зависит от контекста: локальная переменная относится к frame вызова, поле объекта — к данным объекта, элемент int[] — к массиву в heap. Примитив не означает «всегда стек».

Подробный разбор

Ответ с пояснениями

Размещение примитива зависит от контекста: локальная переменная относится к frame вызова, поле объекта — к данным объекта, элемент int[] — к массиву в heap. Примитив не означает «всегда стек».

JIT может держать локальное значение в регистре или вовсе устранить его. Упаковка в Integer создаёт либо переиспользует объект-обёртку, а переменная хранит ссылку. Статические поля и оптимизированные объекты также требуют учёта реализации JVM. На интервью сначала выясняют, речь о модели языка или фактическом размещении после оптимизаций.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее