Назад к вопросам
Junior — Middle
63
Можешь перечислить типы ссылок, существующие в Java и их особенности?
Компании, где спрашивали
Viasat tech
Ответ от нейросети
sobes.tech AI
В Java существуют следующие типы ссылок, которые влияют на сборку мусора и управление памятью:
-
Strong Reference (сильная ссылка)
- Обычная ссылка, которую мы используем по умолчанию.
- Объект, на который есть сильная ссылка, не будет удалён сборщиком мусора.
-
Soft Reference (мягкая ссылка)
- Используется для кэширования.
- Объекты с мягкими ссылками удаляются только при нехватке памяти.
- Класс:
java.lang.ref.SoftReference
-
Weak Reference (слабая ссылка)
- Объекты с слабыми ссылками удаляются при следующем цикле сборки мусора, если нет сильных ссылок.
- Используется для реализации слабых кэшей.
- Класс:
java.lang.ref.WeakReference
-
Phantom Reference (фантомная ссылка)
- Используется для отслеживания момента, когда объект уже готов к удалению.
- Не позволяет получить объект через метод
get()(возвращает null). - Применяется для более тонкого контроля очистки ресурсов.
- Класс:
java.lang.ref.PhantomReference
Пример создания слабой ссылки:
import java.lang.ref.WeakReference;
String strong = new String("Hello");
WeakReference<String> weak = new WeakReference<>(strong);
strong = null; // теперь объект доступен только через слабую ссылку
String value = weak.get(); // может вернуть null, если объект уже собран