Размер ссылок в java
На собеседовании столкнулась с таким вопросом:
сколько места в памяти java занимает примитив?
Т.е., если, например, у нас есть переменная int abc = 5, где-то в памяти должно храниться ее название (переменная может называться 'aaaaaaaaaaaaa', или хоть размером с длину алфавита).
В общем, вопрос ставился как-то так: где и какая информация хранится о примитиве, и сколько места она занимает?
Ответы (2 шт):
Предлагаю прочесть две ссылки
- https://habr.com/ru/post/134102/
- https://javarush.ru/groups/posts/630-primitivnihe-tipih-v-java--ne-takie-uzh-oni-i-primitivnihe
Собственно хорошо описано разница между ссылочными переменными и примитивами. Надеюсь будет полезно.
Имена нужны человеку, после прохождения стадии трансляции в байт-код, в нём уже нет никаких имен длиною в алфавит и в память грузится именно байт-код. В общем не стоит думать, что ваш текст напрямую находит отображение в итоговой программе.
Есть описание типа, есть ссылка на участок в памяти (вместо имени генерируется транслятором) и есть само значение в памяти. Первые два строго не регламентированы спецификацией и могут зависеть от JVM и тема достаточно сложная (https://www.baeldung.com/java-memory-layout), а вот само значение в памяти у примитивов имеет определенное значение и описано спецификацией.
Можно еще подумать о хранении в стеке или куче. Неизвестно, на какой уровень вы проходили собеседование, но возможно от вас требовалась только эта табличка:
