Что такое сильная ссылка (Strong Reference) в Java и в чем ее особенность?

«Что такое сильная ссылка (Strong Reference) в Java и в чем ее особенность?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Сильная ссылка (Strong Reference) — это обычный, стандартный тип ссылки на объект в Java. Объект, на который существует хотя бы одна сильная ссылка, не может быть удален сборщиком мусора (Garbage Collector, GC).

Особенности и использование:

  • Жизненный цикл: Объект живет в куче до тех пор, пока на него указывает сильная ссылка (или пока все такие ссылки не выйдут из области видимости или не будут переприсвоены).
  • Создание: Любое создание объекта через new и присваивание его переменной создает сильную ссылку.
  • Назначение: Используется по умолчанию для хранения основных данных приложения, которые должны быть доступны всё время их использования.

Пример:

// Создание сильной ссылки 'obj' на новый объект Object
Object obj = new Object();

// Пока 'obj' ссылается на объект, GC его не тронет
System.out.println(obj.toString());

// Присвоение null удаляет сильную ссылку.
// Если других сильных ссылок на объект нет, он становится кандидатом на удаление GC.
obj = null;

Контекст других ссылок: Сильные ссылки противопоставляются специальным «слабым» ссылкам, которые не защищают объект от GC:

  • SoftReference (Мягкая ссылка): Объект будет удален только при нехватке памяти.
  • WeakReference (Слабая ссылка): Объект удаляется при следующем цикле GC.
  • PhantomReference (Фантомная ссылка): Используется для финализации и отслеживания удаления.

Сильные ссылки — основа управления памятью в Java, гарантирующая предсказуемое время жизни объектов.