Sobes.tech
Назад к вопросам
Senior
16

Расскажите про стековую память (Stack) и кучу (Heap) в Java

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

В Java стековая память (Stack) и куча (Heap) — это два основных региона памяти с разными назначениями и характеристиками.

Стек (Stack):

  • Хранит локальные переменные методов, параметры и адреса возврата.
  • Каждому потоку соответствует свой стек.
  • Управление памятью происходит автоматически: при вызове метода создаётся фрейм стека, при выходе — удаляется.
  • Быстрый доступ, но ограниченный размер.
  • В стеке хранятся примитивные типы и ссылки на объекты в куче.

Куча (Heap):

  • Хранит объекты и массивы, созданные через new.
  • Общая для всех потоков.
  • Управление памятью происходит через сборщик мусора (Garbage Collector).
  • Размер кучи обычно больше и динамически изменяется.
  • Объекты в куче живут до тех пор, пока на них есть ссылки.

Пример:

public void example() {
    int a = 10; // 'a' хранится в стеке
    MyObject obj = new MyObject(); // ссылка 'obj' в стеке, объект в куче
}

Таким образом, стек отвечает за управление вызовами и локальными данными, а куча — за динамическое хранение объектов с длительным временем жизни.