Где в памяти Java хранится ссылочная переменная?

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

Ответ

Ссылочная переменная (например, String str) хранится в стеке (Stack Memory) как часть фрейма метода. Она содержит не сам объект, а адрес (ссылку) на область в куче (Heap Memory), где расположены данные объекта.

Пример:

String str = new String("Hello");
  • str (ссылка) — в стеке.
  • Объект String("Hello") — в куче.

Ключевое отличие от примитивов:

  • Локальные примитивные переменные (например, int x = 5) хранят значение напрямую в стеке.
  • Ссылочные переменные хранят в стеке только адрес объекта в куче.