Artikel-ID: 294710 - Geändert am: Donnerstag, 23. Oktober 2003 - Version: 2.2

Fehler: Speicherleck im Client-Prozess bei UDP für DCOM-Protokoll

SystemtippDieser Artikel bezieht sich auf ein anderes Betriebssystem als das von Ihnen verwendete. Für Sie möglicherweise nicht relevante Artikelinhalte wurden deaktiviert.
Alles erweitern | Alles schließen

Problembeschreibung

Wenn ein Prozess der DCOM (Distributed Component Object Model)-Client, der UDP (User Datagram Protocol) verwendet, eine große Anzahl von COM-Objekte auf dem Remotecomputer erstellt oder viele Aufrufe von Methoden, die Schnittstellenzeiger als Parameter zurückgeben, sehen Sie möglicherweise eine konsistente Zunahme die privaten Bytes dieses DCOM-Client-Prozesses. Wenn Schnittstellenzeigern gemarshallt werden, werden durch den Clientprozess die Objektkennung (OID) und Zeiger BEZEICHNERS für einen Schnittstellenzeiger (Interface Identifier), IPID zwischengespeichert. Wenn viele Aktivierungen und Methodenaufrufe vorhanden sind, weiterhin dieser Cache vergrößert werden, wenn Sie das UDP-DCOM-Protokoll verwenden.

Wenn der DCOM-Server keine neue Schnittstelle um seinen Clients bei jedem zurückgibt (der ein Singleton, ein Objektpooling oder ein Objekt Wiederverwendung Szenario ausgeführt wird), kann dieses Problem nicht auftreten, weil die OID und IPIDs wiederverwendet werden.

Lösung

Um dieses Problem zu umgehen, verwenden Sie TCP/IP anstelle von UDP für das DCOM-Protokoll. Gehen Sie folgendermaßen vor Connection-orientierten TCP/IP die Liste der Standardprotokolle hinzu,
  1. Starten Sie dcomcnfg.exe.
  2. Suchen Sie auf die Registerkarte Standardprotokolle nach der Connection-orientierten TCP/IP Option in der DCOM-Protokolle -Liste. Ist diese Option nicht vorhanden, klicken Sie Hinzufügen . Klicken Sie in der Liste Protocol Zeichenfolge auf Connection-Oriented TCP/IP , und klicken Sie dann auf OK .
  3. Wenn Verbindungs-orientierten TCP/IP nicht zuerst in der DCOM-Protokolle -Liste angezeigt wird, klicken Sie auf Verbindungs-orientierten TCP/IP , und klicken Sie dann auf Nach oben .
  4. Starten Sie den Computer neu, damit diese Änderungen wirksam werden.

Status

Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel Microsoft-Produkten handelt.

Weitere Informationen

Das folgende Szenario ist ein Szenario, das das Problem reproduzieren kann.

Ein DCOM-Client-Prozess, der UDP verwendet, erstellt ein COM-Objekt auf einem Remotecomputer, ruft eine einfache Methode auf und den Proxy frei. Diese Aufrufsequenz wird in einer Schleife, die den folgenden Code ähnelt umbrochen:
for (;;)
{
     CoCreateInstance (CLSID_TestServ, NULL, CLSCTX_REMOTE_SERVER, IID_TestServ, &pTestServ);
     pTestServ->Call();
     pTestServ->Release();
}
				
nach dieser DCOM Client-Prozess für einige Zeit ausführen können, können Sie eine konsistente Zunahme Private Bytes des Clientprozesses DCOM.

Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft COM+ 2.0 Standard Edition, wenn verwendet mit:
    • Microsoft Windows NT 4.0
Keywords: 
kbmt kbbug kbdcom kbnofix KB294710 KbMtde
Maschinell übersetzter ArtikelMaschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 294710  (http://support.microsoft.com/kb/294710/en-us/ )
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.