Здравствуйте, S.Yu.Gubanov, Вы писали:
SYG>Сборщик мусора необходим для компонентно ориентированного программирования.
<>
Ну, помимо подсчёта ссылок (как разновидности сборки мусора на деревьях), существует механизм сборки мусора на графах.
Он более сложен в реализации, поскольку требует, во-первых, централизованного менеджера, а во-вторых, обработки связей контейнер-член.
Последнее делается либо на уровне языка (smalltalk, java, .net), либо с помощью танцев с бубном.
Для сравнения:
В паскале и C, при удалении объекта (сборка мусора от корня к листьям) нужно вручную удалить всех членов этого объекта. В C++ деструктор автоматизируется на уровне языка.
В C++ пометка членов (обход графа владения) осуществляется вручную; в C# — на уровне языка.