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.