Объекты в памяти хранятся в трёх основных областях:
Стек (Stack): В стеке хранятся примитивные типы данных (целые числа, булевы значения и т.д.), а также ссылки на объекты. Стек работает по принципу LIFO (Last-In, First-Out) и используется для хранения локальных переменных и вызовов функций. Жизненный цикл данных в стеке тесно связан с жизненным циклом функции или блока кода.
Куча (Heap): Основная область для хранения объектов. Объекты создаются в куче с помощью оператора new. Куча не имеет определённого порядка и доступна из любой части программы, имеющей ссылку на объект. Управление памятью в куче осуществляется сборщиком мусора.
Статическая память (Static Memory): В этой области хранятся статические переменные и константы. Данные существуют на протяжении всего времени работы программы.
java
| Область памяти | Что хранится | Управление памятью | Время жизни |
|---|---|---|---|
| Стек | Примитивы, ссылки | Автоматическое | До конца выполнения функции |
| Куча | Объекты | Сборщик мусора (new) | Пока есть ссылки на объект |
| Статическая память | Статические переменные, константы | Автоматическое | Весь период работы программы |