В чем разница между памятью на стеке и на куче

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

Ответ

Стек — это область памяти, где хранятся локальные переменные и вызовы методов. Выделяется и освобождается автоматически (LIFO). Быстрый доступ, но ограниченный размер.

Куча (heap) — динамическая память для объектов, созданных через new. Управляется вручную (или GC в Java/Kotlin). Медленнее, но размер гибкий.

Пример:

fun example() {
    val stackVar = 42 // на стеке
    val heapObj = StringBuilder() // в куче
}

Стек: stackVar удалится после выхода из метода.
Куча: heapObj останется, пока есть ссылки (или GC не очистит).