Методология сборки "мусора" CLR означает, что безопасно бросить круговые ссылки на объект вокруг?

У меня есть теория, что механизм сборки "мусора" CLR означает, что мне могут сойти с рук циклические ссылки в моей иерархии объектов, не создавая мертвые блокировки для разрушения и сборку "мусора". Действительно ли это - безопасное предположение для создания? (Выходной язык VB.NET)

7
задан PeanutPower 3 February 2010 в 11:51
поделиться

2 ответа

NET сборщик мусора - это генерирующая метка и сборщик уборки. В нем не используется подсчет ссылок. Так что, да, можно безопасно иметь круглые ссылки. Язык не имеет значения

.
11
ответ дан 6 December 2019 в 15:22
поделиться

Согласно этой статье: https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100 -10878_11-5109829.html

Циклическая ссылка - это проблема, которая возникает, когда есть два объекта, которые ссылаются друг на . Допустим, у вас есть класс A, который относится к классу B. Если класс B также относится к классу A, то у нас есть циклическая ссылка. Это происходит во многих ситуациях. Типичный пример для - это отношения родитель-потомок между объектами, где дочерний взаимодействует с родительским объектом, а также содержит ссылку на родительский объект. Это может привести к появлению объектов , которые не будут очищены до тех пор, пока приложение не будет закрыто. Способ сборки мусора .NET решает проблему циклической ссылки , поскольку сборщик мусора может очистить любой объект, который {{1} } доступный из корня.

РЕДАКТИРОВАТЬ:
Судя по этому сообщению: http://blogs.msdn.com/abhinaba/archive/2009/01/27/back-to-basics-reference-counting -garbage-collection.aspx кажется, что сборка мусора .Net не основана на подсчете ссылок для сборки мусора.

Еще одна статья, которую стоит прочитать (подробно объясняет сборку мусора): http://www.simple-talk.com/dotnet/.net-framework/understanding-garbage-collection-in-.net /

3
ответ дан 6 December 2019 в 15:22
поделиться