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

1
Bruce Xinda Lin 21 Сен 2013 в 04:50
2
Как уже упоминалось в ответе на вопрос, который вы связали, сборщик мусора Ruby может очень сильно собирать объекты с циклическими ссылками. Не знаю, где вы читали, что нельзя, но это дезинформация.
 – 
sepp2k
21 Сен 2013 в 04:55

1 ответ

Лучший ответ

Я прочитал некоторую статью о сборщике мусора Ruby, и многие упоминали о том, что объект круговой ссылки не может быть очищен.

Это абсолютно не так.

Кто-нибудь может привести несколько примеров того, как создавать круговые ссылки?

Наиболее банально вот так:

arr1 = []
arr2 = [ arr1 ]
arr1 << arr2

Однако, как я сказал (и как указывает ответ на вопрос, который вы связали), у Ruby GC не будет абсолютно никаких проблем со сбором arr1 и arr2 после того, как они выйдут за пределы области видимости.

3
sepp2k 21 Сен 2013 в 04:58