Почему стековая память используется в мобильной разработке и в чем ее специфика
Что проверяют
Знаете ли, что лежит в стеке, а что в куче, и понимаете ли, что сам по себе стек в мобильной разработке ничем особенным не отличается: специфика не в нём, а в ограничениях устройства и в том, сколько потоков заводит приложение.
Как отвечать
Стек это область, своя у каждого потока. В кадре лежат аргументы, локальные переменные и адрес возврата. Важная деталь для виртуальной машины Android: в стеке лежат только примитивы и ссылки, а сами объекты всегда в куче. Строка, список, вьюха живут в куче, на стеке от них только ссылка размером с указатель.
Почему это быстро: размер кадра компилятор знает заранее, поэтому выделение сводится к сдвигу указателя, а освобождение к его возврату на выходе из метода. Сборщик мусора стек не чистит, он его читает: ссылки в кадрах это корни, от которых идёт обход живых объектов.
Специфика мобильной разработки в трёх вещах. Стек каждого потока невелик по сравнению с кучей, а потоков много: главный, потоки пулов, потоки библиотек, и память под их стеки суммируется. Размер задаётся при создании потока и потом не растёт, поэтому глубокая рекурсия заканчивается StackOverflowError, а не выделением ещё памяти. И третье: на главном потоке всё должно укладываться в кадр отрисовки, так что глубокая иерархия вьюх, которая измеряется рекурсивно, бьёт и по стеку, и по плавности.
Стоит добавить, что корутины и колбэки разрывают стек: исключение прилетает с обрезанным следом, и без специальных средств непонятно, кто был вызывающим.
Где спотыкаются
Говорят, что стек защищает от утечек. Утечки живут в куче: объект удерживает статическая ссылка или долгоживущий слушатель, и стек к этому отношения не имеет.
Считают, что локальная переменная освобождает объект на выходе из метода. Освобождается только ссылка, а объект уходит, когда к нему не осталось пути от корней и до него добрался сборщик.
Третье: лечат StackOverflowError увеличением стека потока. Иногда это оправдано, но обычно причина в рекурсии без условия выхода или в дереве вьюх на десятки уровней, и больший стек просто отодвигает падение.