Ответ
Ссылочные переменные хранятся в стеке (Stack Memory), а объекты, на которые они указывают, — в куче (Heap Memory).
Пример:
// Переменная 'obj' хранится в стеке.
// Сам объект 'Object()' размещается в куче.
Object obj = new Object();
Почему так устроено?
- Стек — быстрая, упорядоченная память (LIFO) для хранения примитивов и ссылок на объекты. Его размер ограничен, что обеспечивает простоту управления и скорость доступа.
- Куча — динамическая область памяти для объектов, время жизни которых не привязано к методу. Требует управления сборщиком мусора (Garbage Collector).
Ключевое отличие от примитивов: Локальные переменные примитивных типов (int, char и т.д.) хранят значение напрямую в стеке.