Sobes.tech
Junior — Middle

Čo sa líši medzi rôznymi typmi odkazov v jazyku Java a ako ovplyvňujú zber odpadu?

sobes.tech AI

Odpoveď od AI

V Jave existujú rôzne typy odkazov, ktoré ovplyvňujú správanie Garbage Collectora:

  1. Silná referencia (Strong Reference) — bežná referencia na objekt. Pokiaľ existujú silné odkazy, objekt nebude odstránený Garbage Collectorom.

  2. Mäkká referencia (Soft Reference) — objekt s mäkkou referenciou sa odstráni iba pri nedostatku pamäte. Používa sa na cache.

  3. Slabá referencia (Weak Reference) — objekt so slabou referenciou môže byť odstránený počas nasledujúceho prechodu Garbage Collectora, aj keď existujú slabé odkazy.

  4. Fantomová referencia (Phantom Reference) — používa sa na sledovanie okamihu, keď je objekt pripravený na odstránenie, ale ešte nebol odstránený. Umožňuje vykonávať dodatočné akcie po odstránení objektu.

Príklad použitia slabého odkazu:

import java.lang.ref.WeakReference;

public class WeakRefExample {
    public static void main(String[] args) {
        Object obj = new Object();
        WeakReference<Object> weakRef = new WeakReference<>(obj);

        obj = null; // Odstránenie silnej referencie

        System.gc(); // Spustenie Garbage Collectora

        if (weakRef.get() == null) {
            System.out.println("Objekt odstránený");
        } else {
            System.out.println("Objekt je stále dostupný");
        }
    }
}

Týmto spôsobom umožňuje voľba typu odkazu kontrolovať dobu života objektov a efektívnosť využívania pamäte.