Назад к вопросам
СБЕР
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' в стеке, объект в куче
}
Таким образом, стек отвечает за управление вызовами и локальными данными, а куча — за динамическое хранение объектов с длительным временем жизни.