Sobes.tech
Junior — Middle

Java-da iki obyekt güclü istinadlar vasitəsilə bir-birini saxlayırsa, hansı nəticələr ortaya çıxır?

sobes.tech Süni İntellekt

AI-dan cavab

Java-da iki obyekt bir-birinə güclü istinadlar saxlayırsa, döngüvi istinad adlanan vəziyyət yaranır. Java-nın standart çöp toplayıcısı (GC) bu vəziyyətə yaddaş sızmasına səbəb olmur, çünki GC əlçatanlıq sayım algoritmlərindən istifadə edir: obyektlər kök istinadlardan (məsələn, yığın və ya statik dəyişənlərdən) əlçatan deyilsə, onlar toplanacaq, hətta bir-birinə istinad etsələr belə.

Ancaq, obyektlər aktiv əlçatanlıq sahəsindədirsə, onlar silinməz və bu, yaddaş istifadəsinin artmasına səbəb ola bilər.

Bəzi digər dillərdən fərqli olaraq (məsələn, Objective-C), Java-da döngüvi istinadlar çöp toplayıcı üçün problem deyil.

Nümunə:

class A {
    B b;
}
class B {
    A a;
}

// Əgər obyektlər a və b bir-birinə istinad edirsə, lakin kökdən əlçatan deyilsə, GC onları siləcək.