Sobes.tech
Junior — Middle

Можете ли да обясните какво е слаба препратка в контекста на управлението на паметта в Java?

sobes.tech AI

Отговор от AI

В Java, SoftReference е тип на референция, който позволява на обект да бъде събран от garbage collector, ако системната памет е недостатъчна, но при това обектът се запазва, докато има достатъчно памет.

Това е полезно за кеширане: обектите с меки референции не се премахват веднага, а само когато е необходимо да се освободи памет.

Пример за използване на мека референция:

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; // сега обектът е достъпен само чрез меката референция

        Object obj = softRef.get();
        if (obj != null) {
            System.out.println("Обектът е достъпен");
        } else {
            System.out.println("Обектът вече е събран от garbage collector");
        }
    }
}