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:
-
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.
-
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
-
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
-
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