Где хранятся ссылки на объект

«Где хранятся ссылки на объект» — вопрос из категории Управление памятью, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Ссылки на объекты в Java (и, соответственно, в Android) хранятся в стеке (stack), а сами объекты — в куче (heap).

Пример:

// myObjectRef хранится в стеке, сам объект MyClass — в куче
MyClass myObjectRef = new MyClass();

Ключевые моменты:

  • Примитивы (int, boolean и т.д.) хранятся прямо в стеке
  • Сборщик мусора работает только с кучей
  • Локальные переменные метода уничтожаются при выходе из метода (стек очищается)
  • Null означает, что ссылка ни на что не указывает