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