Sobes.tech
Junior — Middle

V čom spočíva použitie triedy SoftReference v správe pamäte v Jave?

sobes.tech AI

Odpoveď od AI

V Jave, trieda SoftReference saťahuje mäkké odkazy na objekty, ktoré umožňujú garbage collectoru ich odstrániť pri nedostatku pamäte, ale zachovať ich, kým je dostatok pamäte.

To je užitočné pri implementácii cache: objekty, na ktoré existujú iba mäkké odkazy, sa nepovažujú za úplne nedostupné, ale môžu byť odstránené podľa potreby, aby sa predišlo chybe OutOfMemoryError.

Príklad použitia:

SoftReference<byte[]> cache = new SoftReference<>(new byte[1024 * 1024]);

byte[] data = cache.get();
if (data == null) {
    // Objekt bol odstránený garbage collectorem, je potrebné znovu načítať dáta
    data = new byte[1024 * 1024];
    cache = new SoftReference<>(data);
}

Týmto spôsobom SoftReference pomáha efektívne spravovať pamäť, umožňuje ukladať dáta do cache, bez toho, aby bránil garbage collectoru uvoľniť pamäť podľa potreby.