Sobes.tech
Junior — Middle

Czy możesz wyjaśnić, czym jest miękka referencja w kontekście zarządzania pamięcią w Java?

sobes.tech AI

Odpowiedź od AI

Softowe odwołanie (SoftReference) w Java to typ odwołania, który pozwala obiektowi zostać zebranym przez garbage collector, jeśli w systemie brakuje pamięci, ale przy tym obiekt jest zachowany, dopóki pamięć jest dostępna.

Jest to przydatne do buforowania: obiekty z miękkimi odwołaniami nie są usuwane od razu, a tylko wtedy, gdy konieczne jest zwolnienie pamięci.

Przykład użycia miękkiego odwołania:

import java.lang.ref.SoftReference;

public class SoftReferenceExample {
    public static void main(String[] args) {
        Object strongRef = new Object();
        SoftReference<Object> softRef = new SoftReference<>(strongRef);

        strongRef = null; // teraz obiekt jest dostępny tylko przez miękkie odwołanie

        Object obj = softRef.get();
        if (obj != null) {
            System.out.println("Obiekt dostępny");
        } else {
            System.out.println("Obiekt został już zebrany przez garbage collector");
        }
    }
}