Sobes.tech
Junior — Middle

Можеш ли да изброиш типовете препратки, съществуващи в Java, и техните характеристики?

sobes.tech AI

Отговор от AI

В Java съществуват следните типове референции, които влияят върху събирането на отпадъци и управлението на паметта:

  1. Силна референция (Strong Reference)

    • Обикновена референция, която използваме по подразбиране.
    • Обект с силна референция няма да бъде изтрит от събирача на отпадъци.
  2. Мека референция (Soft Reference)

    • Използва се за кеширане.
    • Обектите с меки референции се изтриват само при недостиг на памет.
    • Клас: java.lang.ref.SoftReference
  3. Слаба референция (Weak Reference)

    • Обектите с слаби референции се изтриват при следващия цикъл на събиране, ако няма силни референции.
    • Използва се за реализиране на слаби кешове.
    • Клас: java.lang.ref.WeakReference
  4. Фантомна референция (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, ако обектът вече е събран