Происходит ли в Java утечка памяти при циклических ссылках?

97
30 сентября 2021, 05:10

Сможет ли сборщик мусора в java 11 очистить объекты, имеющие ссылку друг на друга?

public class A {
  B b;
  public A(B b){this.b = b;}
}
public class B{
  A a = new A(this);
}
main(){
 var b = new B();
 ...
 b = null;
}
Answer 1

An object enters an “unreachable” state when no more strong references to it exist. When an object is unreachable then it is a state for collection.

В грубом переводе это означает, что как только объект становится недоступным то попадает в зону "интереса" сборщика мусора. В приложении к циклическим ссылкам это означает, что как только хотя бы 1 из обозначенных объектов не будет иметь внешней ссылки на корневые объекты, то попадет к сборщику мусора. Это хорошо иллюстрируется таким рисунком:

"висящие" (недоступные) объекты будут утилизированы сборщиком мусора (даже если они ссылаются друг на друга)

READ ALSO
Laravel where и orWhere не работает

Laravel where и orWhere не работает

Мой запрос выглядит так

189
Почему не удается восстановить базу данных из файла резервной копии?

Почему не удается восстановить базу данных из файла резервной копии?

Создал файл резервной копии mydb1 с помощью команды mysqldump:

95
Сетка bootstrap в Wordpress съезжает

Сетка bootstrap в Wordpress съезжает

Вот код страницы вывода новости, но почему-то в сетке съезжает блоки

329