Рассмотрим случай, когда объект хранит ссылку на самого себя. Ну например что-то вроде такого
public class A {
private A a;
public A() {
a = this;
}
}
Каким в данном случае будет жизненный цикл объектов данного класса? GC не трогает объекты до тех пор, пока есть ссылки на них. Следует ли из этого то, что объекты этого класса как минимум будут храниться в памяти до тех пор, пока я не присвою переменной a
значение null?
Объекты не удаляются до тех пор пока они "достижимы" (доступны по ссылкам) от так называемого "корня" (GC root).
Ссылки не достижимые от корня в том числе и циклические ссылки не являются препятствием для сборки мусора.
В зависимости от варианта используемого алгоритма сборки мусора, есть различия в том, какие стадии сборки и в какой момент запускаются и по какому признаку объекты разделены на так называемые "поколения"(generations), однако упрощенная схема сборки примерно одна для большинства сборщиков:
Объекты помечаются как достижимые (MARK)
GC кушает недостижимые объекты (SWEEP)
Визуализация примерной схемы работы алгоритма Garbage Collector
использующего алгоритм из подмножества Mark-Sweep
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Вопрос глупый, но сижу уже несколько часовМне нужно в созданный массив добавить кучу текстовых строк
Как сделать чтобы валидация происходиладля всех полей сразу а не по одному
Дано число n (n > 1)Выведите строку, состоящую из простых чисел, меньших n