Когда COM-клиент завершает свою работу нормально,
он выпускает все ссылки на его
объект сервера. Когда клиент
заканчивается ненормально, однако, там
может быть выдающиеся ссылки на
объект сервера. Без мусора
механизм сбора, код сервера
не может знать, когда вернуть
ресурсы, выделенные для СОМ
объект, который затем может вызвать
утечка ресурсов. Для решения этой проблемы
проблема, COM реализует автоматический
механизм сбора мусора, в котором
процесс распознавания COM (RPCSS) на
клиентская машина пингует сервер
машина от имени клиента
процесс.
Альтернативы использованию COM GC
протокол (например, с использованием периодического
"пинг" уровня приложения - метод
звонки, которые сообщают объекту, что
клиенты все еще живы или используют
основной транспортный механизм, такой как
TCP keepalive) явно много
менее эффективны. Следовательно, DCOM
должен использоваться механизм GC по умолчанию
для любых объектов, которые должны быть закрыты
когда их клиенты исчезают или
в противном случае плохо себя вести, если эти объекты
будет эффективно утечки памяти
на сервере.
распознаватель на сервере
отслеживает пинг для каждого
объект сервера. Период пинга 2
минут и, в настоящее время, это не
настраивается. Когда решатель на
серверный компьютер обнаруживает, что объект
не пинговал 6 минут, это
предполагает, что все клиенты объекта
прекратились или нет
дольше используя объект. Решатель
затем выпустит все внешние
ссылки на объект. Это делает это
просто имея заглушку объекта
менеджер (код выполнения COM, который
доставляет звонки на каждый объект) вызов
:: Release () для объекта IUnknown
интерфейс. На данный момент объект
отсчет будет равен нулю, поскольку
время выполнения COM касается. (Там
все еще могут быть ссылки, проводимые местными
(однокомнатные) клиенты, так что
Счетчик внутренних ссылок объекта может
не обязательно идти в ноль в этом
точка.) Объект может затем закрыть
сам вниз.
ПРИМЕЧАНИЕ. Сборка мусора относится к
все серверы независимо от того,
их клиенты являются локальными или удаленными, или
сочетание локального и удаленного.
лежащий в основе механизм пингования
отличается в местном случае, как нет
сетевые пакеты генерируются, но для
все практические цели, поведение
такой же.