Размещение примитива зависит от контекста: локальная переменная относится к frame вызова, поле объекта — к данным объекта, элемент int[] — к массиву в heap. Примитив не означает «всегда стек».
Как примитив оказывается в стеке, а как в куче?
Размещение примитива зависит от контекста: локальная переменная относится к frame вызова, поле объекта — к данным объекта, элемент int[] — к массиву в heap. Примитив не означает «всегда стек».
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Размещение примитива зависит от контекста: локальная переменная относится к frame вызова, поле объекта — к данным объекта, элемент int[] — к массиву в heap. Примитив не означает «всегда стек».
JIT может держать локальное значение в регистре или вовсе устранить его. Упаковка в Integer создаёт либо переиспользует объект-обёртку, а переменная хранит ссылку. Статические поля и оптимизированные объекты также требуют учёта реализации JVM. На интервью сначала выясняют, речь о модели языка или фактическом размещении после оптимизаций.