Как бы то ни было, типы ссылок в Java.
В Java есть 4 типа ссылок.
1. Сильная ссылка (Strong Reference)
Это стандартная ссылка, которую вы используете каждый день.
Объект, на который ссылается хотя бы 1 сильная ссылка не будет удален сборщиком мусора.
📌 Пример:
String strongRef = "Hello";
🔥 Когда использовать: Всегда, если объект должен быть в памяти.
2. Мягкая ссылка (Soft Reference)
Если на объект ссылаются только мягкие ссылки, такой объект может быть удален сборщиком мусора в случае нехватки памяти.
📌 Пример:
SoftReference<String> softRef = new SoftReference<>(new String("Soft"));
String value = softRef.get();🔥 Когда использовать: Для кэшей, которые можно восстановить.
3. Слабая ссылка (Weak Reference)
Если объект не имеет сильных или мягких ссылок, сборщик мусора безжалостно удалит его из памяти.
📌 Пример:
WeakReference<String> weakRef = new WeakReference<>(new String("Weak"));
String value = weakRef.get();🔥 Когда использовать: Например, для ключей в WeakHashMap.
4. Фантомная ссылка (Phantom Reference)
Используется для отслеживания объектов перед их удалением из памяти, что, в свою очередь, позволяет приложению получать уведомления о том, что объект готов к финализации. То есть, мы имеем возможность выполнить определенные действия перед его окончательным удалением.
Это самый слабый тип ссылок в Java. Когда объект становится доступным только через фантомную ссылку, это означает, что он уже помечен для удаления и это является неизбежным. Мы не можем получить доступ к самому объекту и его данным, а лишь сигнал о том, что объект будет удален.
📌 Пример:
ReferenceQueue<String> queue = new ReferenceQueue<>();
PhantomReference<String> phantomRef = new PhantomReference<>(new String("Phantom"), queue);
🔥 Когда использовать: Для работы с системными ресурсами.
Честно скажу, с вероятностью 94.5% эта инфа вам не понадобится в работе 🤷♂️
Но на собесе может оказаться крайне полезной🤓

