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

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

Ответ

Ссылочные типы в Java/Kotlin (объекты, массивы) хранятся в куче (Heap), а переменные, содержащие ссылки на них - в стеке (Stack).

// Пример:
val list = ArrayList<String>() // list - ссылка в стеке, объект ArrayList в куче

Ключевые особенности:

  • Управление памятью автоматическое (сборщик мусора)
  • Доступ к объектам только через ссылки
  • Размер кучи динамически изменяется
  • Примитивные типы (Int, Boolean и т.д.) хранятся в стеке