Junior — Middle
Czy możesz wymienić typy referencji istniejące w Java i ich cechy?
sobes.tech AI
Odpowiedź od AI
W Javie istnieją następujące typy referencji, które wpływają na zbieranie śmieci i zarządzanie pamięcią:
-
Silna Referencja (Strong Reference)
- Domyślna referencja, której używamy.
- Obiekt z silną referencją nie zostanie usunięty przez garbage collector.
-
Miękka Referencja (Soft Reference)
- Używana do buforowania.
- Obiekty z miękkimi referencjami są usuwane tylko w przypadku braku pamięci.
- Klasa:
java.lang.ref.SoftReference
-
Słaba Referencja (Weak Reference)
- Obiekty z słabymi referencjami są usuwane podczas następnego cyklu zbierania śmieci, jeśli nie ma silnych referencji.
- Używana do implementacji słabych pamięci podręcznych.
- Klasa:
java.lang.ref.WeakReference
-
Fantomowa Referencja (Phantom Reference)
- Używana do śledzenia momentu, gdy obiekt jest gotowy do usunięcia.
- Nie pozwala na uzyskanie obiektu przez metodę
get()(zwraca null). - Używana do bardziej precyzyjnej kontroli czyszczenia zasobów.
- Klasa:
java.lang.ref.PhantomReference
Przykład tworzenia słabej referencji:
import java.lang.ref.WeakReference;
String silna = new String("Hello");
WeakReference<String> słaba = new WeakReference<>(silna);
silna = null; // teraz obiekt jest dostępny tylko przez słabą referencję
String wartość = słaba.get(); // może zwrócić null, jeśli obiekt został już zebrany