Junior — Middle
Koje posledice nastaju ako dva objekta u Javi međusobno drže putem jakih referenci?
sobes.tech АИ
Одговор од АИ
Ako dva objekta u Java održavaju jedno drugo snažnim referencama, javlja se situacija zvana ciklička referenca. U standardnom sakupljaču smeća Java (GC), to ne dovodi do curenja memorije, jer GC koristi algoritme brojenja dostupnosti: ako objekti nisu dostupni iz korenskih referenci (npr. sa steka ili statičkih promenljivih), biće sakupljeni, čak i ako se međusobno referenciraju.
Međutim, ako su objekti u aktivnoj oblasti dostupnosti, neće biti uklonjeni, što može dovesti do povećanja potrošnje memorije.
Za razliku od nekih drugih jezika sa brojanjem referenci (npr. Objective-C), cikličke reference u Java nisu problem za sakupljač smeća.
Primer:
class A {
B b;
}
class B {
A a;
}
// Ako se objekti a i b međusobno referenciraju, ali nisu dostupni iz korena, GC će ih ukloniti.