SYG>Афигейте, мне то что.
Да я офигеваю, офигеваю...
SYG>А, собственно, что именно надо объяснить?
Не надо ничего обяснять, я уже все понял.
SYG>Я разьве говорил что кроме модульных систем никаких других систем не бывает? Конечно бывают как модульные так и не модульные системы, вот, пожалуйста,
SYG>тот же Windows с Unix-ом не модульные и ничего вроде, нормально работают.
Вот только не надо валить в одну кучу современные Windows системы и технологию тридцатилетней давности.
-----------------------------------------------------
А теперь вернемся к вопросу модульных систем.
SYG>>Теперь, собственно, при чем тут сборщик мусора.
Вообще говоря, ни при чем.
SYG>>Пусть есть многомодульная система.
Windows
SYG>>Большинство модулей на момент написания не имели никакого представления друг о друге.
Ну это вряд ли, иначе что они будут друг с другом делать?
SYG>>Модули — единицы компиляции и исполнения программы, они могут динамически загружаться/выгружаться во время работы Программы.
COM servers.
SYG>> Под Программой, можно понимать всю операционную систему, а модули — ее расширения.
COM client (пусть это будет пронрамма, просто программа).
SYG>>Модули создают внутри себя объекты и в виде полиморфных переменных передают их для использования другим модулям,
COM objects.
SYG>>те модули, в свою очередь, могут передать эти полиморфные переменные третьим модулям и т.д..
А захотят ли?
SYG>>Модуль создавший обьект и отдавший его другому модулю в принципе понятия не имеет кто еще пользуется этим объектом и как долго он это намерен делать. А значит модуль-создатель в принципе не может нести ответсвенность за уничтожение им созданного объекта. Но никакой другой модуль тоже в принципе не может нести ответсвенность за уничтожение чужого объекта.
И не надо. Объект сам знает, когда ему убиться.
SYG>>Подсчет ссылок на объект проблемы не решает поскольку, в общем случае, возможны замкнутые петли (циклические) ссылки объектов друг на друга.
А вот для избежания циклических зависимостей в COMе существуют такие механизмы как Connection points. Anyway, циклические зависимости возникают как правило в сильно связанных объектах, т.е. в границах одного-нескольких модулей, да и то по ошибке автора.
Ну и чем вам Windows не модульная система?
SYG>>Утечка памяти в многомодульных системах неизбежна
SYG>>по принципиально неразрешимым причинам.
Хотелось бы ознакомиться с ними.
SYG>>Единственным выходом из этой ситуации является наличие единого на всю операционную систему полноценного сборщика мусора. Сборщик мусора — это не роскошь, и не фича придуманная для ленивых программистов. Сборщик мусора — это осознанная необходимость. Существование многомодульныех систем, модули которых обмениваются друг с другом объектами, невозможно без одного на всех полноценного сборщика мусора.
Не понял, откуда это следует.
... << RSDN@Home 1.1.3 stable >>