Sobes.tech
Junior — Middle

Poți enumera tipurile de referințe existente în Java și caracteristicile lor?

sobes.tech AI

Răspuns de la AI

În Java, există următoarele tipuri de referințe care influențează colectarea gunoiului și gestionarea memoriei:

  1. Referință Puternică (Strong Reference)

    • Referința obișnuită pe care o folosim implicit.
    • Un obiect cu o referință puternică nu va fi șters de colectorul de gunoi.
  2. Referință Moale (Soft Reference)

    • Folosită pentru caching.
    • Obiectele cu referințe moi sunt șterse doar în caz de lipsă de memorie.
    • Clasă: java.lang.ref.SoftReference
  3. Referință Slabă (Weak Reference)

    • Obiectele cu referințe slabe sunt șterse în următorul ciclu de colectare a gunoiului dacă nu există referințe puternice.
    • Folosită pentru implementarea cache-urilor slabe.
    • Clasă: java.lang.ref.WeakReference
  4. Referință Fantomă (Phantom Reference)

    • Folosită pentru a urmări momentul în care un obiect este gata pentru ștergere.
    • Nu permite obținerea obiectului prin metoda get() (returnează null).
    • Se folosește pentru un control mai fin al curățării resurselor.
    • Clasă: java.lang.ref.PhantomReference

Exemplu de creare a unei referințe slabe:

import java.lang.ref.WeakReference;

String puternic = new String("Hello");
WeakReference<String> slab = new WeakReference<>(puternic);

puternic = null; // acum obiectul este accesibil doar prin referința slabă

String valoare = slab.get(); // poate returna null dacă obiectul a fost deja colectat