Junior — Middle
Ar šiukšlių surinkėjas gali nustatyti ir išvalyti objektus, esančius ciklinėse jungtyse?
sobes.tech AI
Atsakymas iš AI
Taip, šiuolaikiniai šiukšlių surinkėjai, įskaitant tuos, kurie naudojami Android (pavyzdžiui, Garbage Collector JVM/ART), gali aptikti ir išvalyti objektus, kurie yra ciklinių nuorodų, jei iš šakninių objektų nėra išorinės nuorodos.
Tai įmanoma dėka sekimo algoritmų, kurie pradeda nuo šakninių objektų (pavyzdžiui, steko, statinių kintamųjų) ir pažymi visus pasiekiamus objektus. Objektai, kurie nėra pasiekiami iš šaknų, laikomi šiukšlėmis, net jei jie tarpusavyje nurodo vienas kitą cikliškai.
Todėl ciklinės nuorodos pačios savaime nesustabdo šiukšlių surinkimo, jei objektai nėra naudojami programoje.