Was sind Windows - "BENUTZER-Objekte"
Ich versuche, die Spur zu einem Problem in unserer MFC-code, der aussieht wie eine Ressource Beschränkung Problem. Speicher und CPU sehen gut aus. Gemäß der Registerkarte "Prozesse" auf der Task-manager unserer GDI-Objekte im Einklang mit anderen Anwendungen, aber unsere BENUTZER erscheinen die Objekte um einen Faktor 10 größer als in anderen Anwendungen.
Was ist ein "ANWENDER-Objekt" und was sind die Grenzen?
InformationsquelleAutor JonDrnek | 2009-05-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist eine "klassische" MSDN-Artikel: Geben Sie Mir ein Griff, und ich werde Ihnen ein Objekt Zeigen,
Letzte mal war ich aufspüren von Windows-Objekt leaks (was ich vermute) Process Explorer war praktisch (handley?). Der untere Bereich könnte zeigen einige zugewiesenen system-Objekte, plus es könnte der einfache USER, GDI, etc Gegenstand-zählen.
Den desktop heap, das ist ein Speicherbereich, wo die eigentliche "Sache" der Griff steht für Leben (zumindest einige Griffe, nicht kernel-handles zumindest). Es ist manchmal nicht so viel, wie viele handles, die Sie reserviert haben, aber wie viel Speicher die einzelnen Objekt unter dem Griff ist mit. Sie können die debug-heap auf diese Weise. Es ist ein Schmerzen zu installieren.
InformationsquelleAutor Aardvark
Lesen Sie alle über es hier:
Objekt-Kategorien
Das system bietet drei Kategorien von Objekten: user, graphics device interface (GDI), und kernel. Das system verwendet den Benutzer-Objekten zu unterstützen, Fenster-management, GDI-Objekte zur Unterstützung von Grafik-und kernel-Objekte zur Unterstützung von Speicher-management, Prozess-Ausführung und IPC (interprocess communications). Weitere Informationen zum erstellen und verwenden ein bestimmtes Objekt, beziehen sich auf die zugehörige übersicht.
Benutzer Objekte
User interface objects-support-mit nur einem Handgriff pro Objekt. Prozesse können nicht Erben oder duplizieren von handles für user-Objekte. Prozesse in einer Sitzung nicht auf eine Benutzer-handle in einer anderen Sitzung.
Gibt es ein theoretisches limit von 65.536-handles pro Sitzung. Jedoch, die maximale Anzahl der handles, die geöffnet werden können pro Sitzung ist in der Regel niedriger, da es betroffenen durch den verfügbaren Speicher. Es gibt auch eine Standard-pro-Prozess-Grenze von handles. Um die Begrenzung zu ändern, setzen Sie den folgenden Registrierungswert:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\USERProcessHandleQuota
Dieser Wert kann eine Zahl zwischen 200 und 18.000.
InformationsquelleAutor Otávio Décio
Ich weiß nicht was Sie sind, aber ich weiß, Sie gehören Fenster-Griffe.
Für Fenstergriffe gibt es ein system, Breite maximal rund 32000, - und pro Prozess maximal 10000. (Dies kann nur BENUTZER-Objekt-Grenze, statt gerade Fenster behandelt.)
Die Anzahl der Windows-handles kann sehr hoch sein, wenn Sie undicht werden, Fenstergriffe, oder wenn Sie große Mengen von windows. (Beachten Sie, dass selbst einfache Steuerelemente wie text-label verbraucht ein einziges Fenster-handle.)
Ich lief in die 10000-Grenze für einen Prozess. Sobald das limit erreicht ist erhalten Sie 'Fehler beim erstellen des Fenster-handle', wenn Sie versuchen, eine neue winforms-Objekt.
InformationsquelleAutor Tobi