Когда срабатывает Garbage Collector на разные ссылки в Java

«Когда срабатывает Garbage Collector на разные ссылки в Java» — вопрос из категории Управление памятью, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Garbage Collector (GC) в Java освобождает память, когда объект становится недостижимым (нет активных ссылок). Основные сценарии:

  1. Локальные переменные – после выхода из метода.
  2. Null-ссылки – присвоение null делает объект кандидатом на сборку.
  3. Переприсвоение ссылки – старая ссылка теряется.
  4. Изолированные объекты – циклические ссылки без внешних связей.

Пример:

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 работает не мгновенно, а по мере необходимости или при нехватке памяти.