Размер ссылок в java

На собеседовании столкнулась с таким вопросом:

сколько места в памяти java занимает примитив?

Т.е., если, например, у нас есть переменная int abc = 5, где-то в памяти должно храниться ее название (переменная может называться 'aaaaaaaaaaaaa', или хоть размером с длину алфавита).

В общем, вопрос ставился как-то так: где и какая информация хранится о примитиве, и сколько места она занимает?


Ответы (2 шт):

Автор решения: Дмитрий Алексеенко

Предлагаю прочесть две ссылки

  1. https://habr.com/ru/post/134102/
  2. https://javarush.ru/groups/posts/630-primitivnihe-tipih-v-java--ne-takie-uzh-oni-i-primitivnihe

Собственно хорошо описано разница между ссылочными переменными и примитивами. Надеюсь будет полезно.

→ Ссылка
Автор решения: Alex Krass

Имена нужны человеку, после прохождения стадии трансляции в байт-код, в нём уже нет никаких имен длиною в алфавит и в память грузится именно байт-код. В общем не стоит думать, что ваш текст напрямую находит отображение в итоговой программе.

Есть описание типа, есть ссылка на участок в памяти (вместо имени генерируется транслятором) и есть само значение в памяти. Первые два строго не регламентированы спецификацией и могут зависеть от JVM и тема достаточно сложная (https://www.baeldung.com/java-memory-layout), а вот само значение в памяти у примитивов имеет определенное значение и описано спецификацией.

Можно еще подумать о хранении в стеке или куче. Неизвестно, на какой уровень вы проходили собеседование, но возможно от вас требовалась только эта табличка:

введите сюда описание изображения

→ Ссылка