Ссылочные типы хранятся в куче (Heap).
Во время работы приложения с ними происходит следующее:
- Создание: При создании объекта ссылочного типа (например,
new MyClass()) память под этот объект выделяется в куче. Переменная, которая его хранит, содержит ссылку на этот участок памяти.
- Доступ: Доступ к полям и методам объекта осуществляется через эту ссылку.
- Сборка мусора (Garbage Collection): Когда объект больше недоступен из какой-либо активной части программы (на него нет ссылок), сборщик мусора может освободить занимаемую им память в куче. Этот процесс происходит автоматически "в фоне" и не требует явного вмешательства разработчика. Сборщик мусора периодически сканирует кучу, находит недостижимые объекты и возвращает их память системе.
- Изменение: Содержимое объекта в куче может меняться. Если несколько ссылочных переменных указывают на один и тот же объект, изменение его состояния через одну переменную будет видно через другие.
- Переприсвоение ссылки: Переменная ссылочного типа может быть переприсвоена для ссылки на другой объект или на
null.
Пример:
java