Ответ
Garbage Collector (GC) в Java освобождает память, когда объект становится недостижимым (нет активных ссылок). Основные сценарии:
- Локальные переменные – после выхода из метода.
- Null-ссылки – присвоение
nullделает объект кандидатом на сборку. - Переприсвоение ссылки – старая ссылка теряется.
- Изолированные объекты – циклические ссылки без внешних связей.
Пример:
void example() {
Object obj1 = new Object(); // 1. Создаем объект
Object obj2 = new Object(); // 2. Еще один объект
obj1 = obj2; // 3. obj1 теперь ссылается на obj2, старый объект доступен для GC
obj2 = null; // 4. obj2 = null, но obj1 еще держит ссылку
} // 5. После выхода из метода все локальные ссылки теряются – GC может собрать объекты
Важно: GC работает не мгновенно, а по мере необходимости или при нехватке памяти.