Wenn ein COM-Client endet normalerweise, es gibt alle Verweise auf seine Serverobjekt. Wenn ein Client jedoch abnormal beendet wird, gibt möglicherweise ausstehende Verweise auf das Serverobjekt . Ohne einen Müll Sammelmechanismus, hat der Server-Code keine Möglichkeit zu wissen, wann die Ressourcen für das COM Objekt, die dann eine Ressource Leck verursachen können, zurückfordern können. Um dieses Problem implementiert COM einen automatischen Speicherbereinigungs Mechanismus, bei dem die COM-Resolver Prozess (RPCSS) auf der Client-Maschine Pings der Server Maschine im Auftrag des Client Prozesses.
Alternativen zur Verwendung von GC Protokoll des COM (beispielsweise periodische Anwendungsebene „Pings“ können - Methode Anrufe, die das Objekt informieren, dass Kunden noch am Leben sind, oder ein zugrunde liegenden Transportmechanismus wie TCP Keepalives) sind nachweislich viel weniger effizient. Daher Standard-GC-Mechanismus DCOM sollte für alle Objekte verwendet werden, die heruntergefahren werden müssen, wenn ihre Kunden verschwinden oder sonst schlecht benehmen, wenn diese Objekte effektiv Speicherlecks auf dem Server werden würde.
Der Resolver auf dem Server-Rechner verfolgt die Pings für jedes Serverobjekt . Der Ping-Zeitraum ist 2 Minuten und derzeit ist es nicht konfigurierbar. Wenn der Resolver auf dem Server feststellt, dass ein Objekt für 6 Minuten nicht gepingt wurde, nimmt er an, dass alle Clients des Objekts nicht länger beendet haben, das Objekt zu verwenden. Der Resolver gibt dann alle externen Referenzen auf das Objekt frei. Es tut dies , indem Sie einfach den Stub des Objekts Manager (der COM-Laufzeitcode, liefert Aufrufe an jedes Objekt) Aufruf :: Release() auf der IUnknown Schnittstelle des Objekts. Zu diesem Zeitpunkt ist der Referenzzähler des Objekts Null, soweit die COM-Laufzeit betroffen ist.(Es kann noch Verweis durch lokale (same-Wohnung) Kunden gehalten werden, so dass das Objekts interne Referenzzähler auf Null nicht unbedingt gehen können an diesem Punkt .) Das Objekt kann geschlossen dann selbst nach unten.
HINWEIS: Die Garbage-Collection gilt für alle Server unabhängig davon, ob ihre Kunden sind lokal oder remote oder eine Kombination aus lokalen und entfernten. Der zugrundeliegende Ping-Mechanismus ist anders im lokalen Fall, da keine Netzwerkpakete generiert werden, aber für alle praktischen Zwecke ist das Verhalten das gleiche.