Сколько стеков может быть в процессе

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

Ответ

В Android-процессе может быть только один основной стек (main stack), но при использовании многопоточности каждый поток имеет свой стек вызовов.

Пример:

Thread {
    // У этого потока свой стек вызовов
    println("Thread stack")
}.start()

Нюансы:

  • Главный поток (main/UI thread) имеет свой стек.
  • Фоновые потоки (worker threads) создают отдельные стеки.
  • Размер стека по умолчанию ~8 МБ (может меняться в зависимости от устройства).
  • Стек переполняется при глубокой рекурсии или бесконечных вызовах (StackOverflowError).