В чем разница между Stack и Heap в JVM

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

Ответ

Stack используется для хранения примитивов и ссылок на объекты, выделяется для каждого потока. Имеет ограниченный размер, доступ быстрый, память освобождается автоматически при выходе из метода.

Heap — общая область памяти для всех объектов. Размер динамический, доступ медленнее, сборщик мусора (GC) управляет освобождением памяти.

Пример:

void method() {
    int x = 5; // в стеке
    String s = new String("hello"); // объект в хипе, ссылка s в стеке
}