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

Что такое Retain Cycle

Retain cycle (цикл удержания) — это ситуация, когда два или более объекта удерживают друг друга через сильные ссылки, создавая замкнутый цикл. Это приводит к утечке памяти, так как счетчики ссылок никогда не достигают нуля, и объекты не могут быть освобождены.

Пример в Python (с использованием weakref для избежания retain cycle):

python
import weakref

class Node:
    def __init__(self, value):
        self.value = value
        self._next = None
    
    @property
    def next(self):
        return self._next() if self._next else None
    
    @next.setter
    def next(self, node):
        self._next = weakref.ref(node) if node else None

# Использование
a = Node(1)
b = Node(2)
a.next = b
b.next = a  # Нет retain cycle благодаря weakref

В Python retain cycle менее критичен благодаря сборщику мусора, но все равно может приводить к задержкам в освобождении памяти. Для предотвращения используют weakref или явный разрыв связей.

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

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

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

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