Junior — Middle
Mikor történik pontosan a szemétgyűjtő az objektumok esetében, amelyek Soft Reference-en keresztül hivatkoznak?
sobes.tech MI
Válasz az MI-től
Azokat a tárgyakat, amelyeket SoftReference-en keresztül hivatkoznak, csak akkor gyűjti össze a szemétgyűjtő, ha kevés a memória. Ez azt jelenti, hogy ezek a tárgyak hosszabb ideig élnek, mint a normál erős hivatkozásokkal rendelkező tárgyak, de törölhetők, ha a JVM nyomás alatt áll a memória miatt.
A SoftReference gyakran cache-ként van használva: a tárgyak a memóriában maradnak, amíg a források rendelkezésre állnak, és szükség esetén törlődnek a memória felszabadítása érdekében.
Ezért a szemétgyűjtő törli a SoftReference-en keresztül hivatkozott tárgyat, amikor:
- Kevés szabad memória van.
- A JVM úgy dönt, hogy szabadít fel memóriát új tárgyak számára.
Ez a viselkedés eltér a WeakReference-től, ahol egy tárgy a következő szemétgyűjtési ciklusban összegyűjthető, ha nincs rá erős hivatkozás.