Зачем нужно разделение на кучу и стек

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

Ответ

Стек используется для хранения примитивных типов и ссылок на объекты, имеет ограниченный размер и работает по принципу LIFO. Куча - для хранения объектов, размер динамически изменяется.

Пример:

void method() {
    int x = 5; // хранится в стеке
    String s = new String(); // объект в куче, ссылка в стеке
}

Почему разделение?

  1. Производительность - доступ к стеку быстрее.
  2. Управление памятью - стек очищается автоматически при выходе из метода, кучу чистит GC.
  3. Безопасность - изоляция данных между потоками (у каждого свой стек).