Почему вся работа не происходит в куче

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

Ответ

Работа с кучей (heap) требует больше ресурсов, чем работа со стеком (stack), из-за динамического выделения памяти и необходимости её освобождения (что может привести к утечкам, если не управлять правильно). В Android куча используется для объектов, которые должны жить дольше вызова метода или быть доступны из разных потоков. Однако, частые аллокации в куче могут вызвать сборку мусора (GC), что приводит к лагам UI.

Пример:

// Стек (быстро, но ограничено)  
fun sum(a: Int, b: Int): Int = a + b  

// Куча (медленнее, но гибко)  
val user = User("Alice") // Объект в куче  

Для оптимизации Android использует пулы объектов (например, Message.obtain()), избегая лишних аллокаций.