Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi GDI Handles einer Anwendung (https://www.delphipraxis.net/186341-gdi-handles-einer-anwendung.html)

mm1256 1. Sep 2015 09:56

AW: GDI Handles einer Anwendung
 
Zitat:

Zitat von Whookie (Beitrag 1314183)
Grundsätzlich stellt sich also die Frage ob ein so hoher Wert nicht einfach ein Designproblem ist?

So sehe ich das auch und wette mal einen alten Hut gegen einen neuen PC, dass sehr extensiv (wenn überhaupt) von der Möglichkeit Gebrauch gemacht wird, Formulare dynamisch zur Laufzeit zu erzeugen, und wenn sie nicht mehr gebraucht werden wieder freizugeben. Testweise habe ich mit dem og. Tool mal meine größte App geprüft, eine MDI-Anwendung mit insgesamt über 150 Fenstern/Formularen. Wenn ich alle 12 MDI's aufmache und dazu noch einen modalen Dialog mit Bildanzeige (mehr geht nicht) dann komme ich auf ~700 Handles (All GDI).

Alex_ITA01 1. Sep 2015 10:15

AW: GDI Handles einer Anwendung
 
Danke für eure Antworten.
Jetzt kommen wir doch der Sache näher.

Doch, ich habe die meisten Fenster dynamisch gestaltet.

Ich komme ja in der Spalte "GDI Total" auf nur knapp 1000. Aber bei "Alle GDIs" stehen mal eben 5000.
Die Frage ist also immernoch, wo kommt diese Differenz her, da ich ja anscheind keinen Einfluss darauf nehmen kann. Also was für Handles könnten das sein, die sich als GDI Handle ausgeben aber nicht in der GDI Handle Table stehen. Ich bin ja gerne bereit etwas an meinem Design der Anwendung zu ändern aber dafür müsste ich ja erstmal wissen, wo ich anpacken kann.

Viele Grüße

mm1256 1. Sep 2015 11:38

AW: GDI Handles einer Anwendung
 
Hallo,

wenn ich mir auf meinem Arbeits-PC das Verhältnis von "GDI Total" zu "All GDI" ansehe, dann fällt mir positiv der TeamViewer mit 442 zu 483 auf, und negativ der Total-Commander mit 207 zu 429. Da schlagen vermutlich die vielen Bitmaps zu. Wenn ich z.B. die Laufwerkbuttons weg nehme, sind es nur mehr 165 zu 390.

So ähnlich könnte es sich vielleicht bei dir auch verhalten. Abhilfe....vielleicht ImageList verwenden, Fenster vererben...usw. Läuft halt ohne Detailkenntnisse leider nur auf Glaskugel hinaus. Du müsstest also schon etwas mehr Infos/Details benennen.

Alex_ITA01 1. Sep 2015 11:59

AW: GDI Handles einer Anwendung
 
aber in dem Verhältnis 207 zu 429 sind doch in den 207 die Bitmaps mit drinne.
Also egal wie hoch die Anzahl ist, ich würde ja gerne mal wissen, was die anderen Handles für welche sind, da ja Bitmaps zu dem ersten Wert gehören. Die sind für mich auffindbar und anpassbar...

Viele Grüße

Alex_ITA01 1. Sep 2015 12:54

AW: GDI Handles einer Anwendung
 
Noch ein Beispiel:

Leeres Formular mit einem Button hat ungefähr ~40 GDI Handles (Total GDIs) -- Verhältnis 3 / 43.
Beim Button Klick ein zweites Formular dynamisch erzeugen mit einem leeren VirtualStringTree drauf (keine Eigenschaften angepasst). Verhältnis 9 / 140

Also auf einmal 100 GDI Handles mehr (Totale GDIs, nicht die aufsummierten aus Bitmap und Co) nur wegen einem Formular und einem VirtualStringTree.

Ich würde nur zu gerne wissen, was das für Ressourcen sein sollen...

Viele Grüße

TiGü 1. Sep 2015 13:17

AW: GDI Handles einer Anwendung
 
Zitat:

Zitat von Alex_ITA01 (Beitrag 1314232)
Ich würde nur zu gerne wissen, was das für Ressourcen sein sollen...

Was genau hält dich jetzt auf in die Quelltexte des Frameworks zu gucken?

Beispiel:
TCustomForm hat einen TControlCanvas, der wiederrum alle entsprechenden Eigenschaften belegt (Font, Pen, Brush) und die Elternklasse TWinControl hat einen TBrush als Membervariable. Allein schon das erzeugen von derartigen Objekten belegt GDI-Ressourcen.

TiGü 1. Sep 2015 13:23

AW: GDI Handles einer Anwendung
 
Ja, ne...oder? :shock:
http://www.delphipraxis.net/118257-a...i-objekte.html

Alex_ITA01 1. Sep 2015 14:05

AW: GDI Handles einer Anwendung
 
Anscheind ist das Problem noch nicht korrekt beschrieben...

Font, Pen, Brush, Bitmaps, DC usw. sind in der GDI Handle Table registriert und ergeben in Summe den Wert, der in der Spalte "GDI Total" steht. Ich möchte aber gerne die Differenz zu "Alle GDIs" herausfinden und evtl. daran etwas ändern.

Viele Grüße

Es hat nichts mit dem von dir geposteten Link zu tun.
Es geht doch um ein neues, leeres (bis auf paar Standardkomponenten) Projekt.

TiGü 1. Sep 2015 14:21

AW: GDI Handles einer Anwendung
 
Die Hilfe/Beschreibung zu den Programm hast du aber schon gelesen, oder?
Zitat:

Zitat von http://www.nirsoft.net/utils/gdi_handles.html
'GDI Total' and 'All GDI' columns
The 'GDI Total' column (a new column added on v1.05) displays the total number of all GDI handles found in the GDI table for the specified process. This means that 'GDI Total' column display the sum of the following columns: Pen, ExtPen, Brush, Bitmap, Font, Palette, Region, DC, Metafile DC, Enhanced Metafile DC, and Other GDI.
The 'All GDI' value is taken from Windows API call (GetGuiResources), and it usually contains a value larger than 'GDI Total', probably because it also counts some internal kernel GDI objects that are not included in the GDI objects table of the process.

Notice: If you have a problem that the 'All GDI' value is increased, while there is no leak with the other GDI values, it means that you probably have a leak in the creation of icons or cursors (Icons and cursors are created without destroying them later).


Alex_ITA01 1. Sep 2015 15:31

AW: GDI Handles einer Anwendung
 
Sorry aber versteh mich nicht...
Klar habe ich die gelesen und da steht das man anscheind irgendwo Leaks mit Cursors und Icons oder ähnlichem hat.

Aber wie erklärst du mir dann damit das Beispiel mit den 2 Formularen und dem einen VirtualStringTree auf dem zweiten Formular. Ich habe doch gar keine Cursoren, Icons oder ähnliches angepackt. Nicht mal Quelltext habe ich geschrieben außer das Form2 initialisiert und angezeigt wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:13 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz