Объекты в памяти обычно хранятся в куче (heap).
Куча — это область памяти, где динамически выделяются объекты в процессе выполнения программы. Время жизни объектов в куче определяется сборщиком мусора (если он есть в языке) или явным освобождением памяти.
В отличие от кучи, на стеке (stack) хранятся локальные переменные примитивных типов, ссылки на объекты и информация о вызовах функций. Размер стека фиксирован или ограничен, и данные на стеке удаляются при выходе из области видимости.
| Отличие | Куча (Heap) | Стек (Stack) |
|---|---|---|
| Назначение | Хранение объектов, массивов | Хранение примитивов, ссылок |
| Выделение | Динамическое | Автоматическое |
| Управление | Сборщик мусора / Явное | Автоматическое |
| Скорость | Медленнее | Быстрее |
| Размер | Гибкий, может быть большим | Фиксированный / Ограничен |
Пример в Java:
java
Пример в Python:
python
Конкретное расположение может зависеть от языка программирования, его рантайма и архитектуры (например, при использовании escape analysis объект может быть выделен на стеке даже для ссылочного типа,RUST).