Junior — Middle
Можеш ли да изброиш типовете препратки, съществуващи в Java, и техните характеристики?
sobes.tech AI
Отговор от 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 силна = new String("Hello");
WeakReference<String> слаба = new WeakReference<>(силна);
силна = null; // сега обектът е достъпен само чрез слаба референция
String стойност = слаба.get(); // може да върне null, ако обектът вече е събран