Встречается на собеседованиях • сегодня

Могут ли циклические ссылки создать утечку памяти

Да, циклические ссылки могут привести к утечке памяти, если объекты ссылаются друг на друга, но больше не используются в программе. В Java сборщик мусора (GC) использует алгоритм mark-and-sweep, который удаляет объекты, недостижимые от корневых ссылок. Однако, если два или более объекта ссылаются друг на друга, но не имеют внешних ссылок, они все равно будут удалены, так как GC определяет недостижимость через корневые ссылки.

Пример циклической ссылки:

java
class Node {
    Node next;
}

Node a = new Node();
Node b = new Node();
a.next = b;
b.next = a; // Циклическая ссылка
a = null;
b = null; // Теперь объекты недостижимы и будут удалены GC

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

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы