В чем разница между стеком и кучей

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

Ответ

Стек и куча — это области памяти, используемые для хранения данных в Android (и Java/Kotlin).

Стек:

  • Хранит примитивы и ссылки на объекты.
  • Выделяется для каждого потока.
  • Автоматически управляется (память освобождается при выходе из метода).
  • Быстрый доступ, но ограниченный размер.

Куча:

  • Хранит сами объекты.
  • Общая для всего приложения.
  • Требует ручного управления (сборщик мусора).
  • Медленнее, но размер ограничен только устройством.

Пример:

fun example() {
    val x = 5 // int в стеке
    val obj = MyClass() // объект в куче, ссылка в стеке
}