Sobes.tech
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ą:

  1. Silna Referencja (Strong Reference)

    • Domyślna referencja, której używamy.
    • Obiekt z silną referencją nie zostanie usunięty przez garbage collector.
  2. 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
  3. 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
  4. 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