AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

GDI Handles einer Anwendung

Ein Thema von Alex_ITA01 · begonnen am 25. Aug 2015 · letzter Beitrag vom 2. Sep 2015
Antwort Antwort
Alex_ITA01

Registriert seit: 22. Sep 2003
1.134 Beiträge
 
Delphi 12 Athens
 
#1

AW: GDI Handles einer Anwendung

  Alt 1. Sep 2015, 12:54
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
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.079 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: GDI Handles einer Anwendung

  Alt 1. Sep 2015, 13:17
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.
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.079 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: GDI Handles einer Anwendung

  Alt 1. Sep 2015, 13:23
Ja, ne...oder?
http://www.delphipraxis.net/118257-a...i-objekte.html
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.134 Beiträge
 
Delphi 12 Athens
 
#4

AW: GDI Handles einer Anwendung

  Alt 1. Sep 2015, 14:05
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.
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.079 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: GDI Handles einer Anwendung

  Alt 1. Sep 2015, 14:21
Die Hilfe/Beschreibung zu den Programm hast du aber schon gelesen, oder?
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).
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.134 Beiträge
 
Delphi 12 Athens
 
#6

AW: GDI Handles einer Anwendung

  Alt 1. Sep 2015, 15:31
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.
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
454 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: GDI Handles einer Anwendung

  Alt 1. Sep 2015, 16:01
Also mal kurz experimentell herausgefunden:

1.
Kleines Progamm mit ein paar Buttons, geöffnet 16/44 (hatte auch schon 21/44).
Mit dem Button erstelle ich eine sonst leere Form und zeige sie Modal an: 16/47 (braucht also drei geheime Ressourcen).

Daraus lässt sich ableiten das die Analyse der Handles von seiten GDIView wohl nicht komplett ist, denn so eine Form benötigt bestimmt Ressourcen und die sind wohl auch nicht geheim. Vielmehr denke ich, das Microsoft - die bewusst undokumentierte - GDI-Table umgestaltet/ausgebaut/erweitert/... hat und damit nicht alle Werte angezeigt werden (können).

2.
Weiterer Button zum Erzeugen eines Icons (das braucht so eine Form) und schon geht der Zähler von 16/44 auf 16/45. Daraus folgt: Icons werden schon mal nicht mitgezählt...

Die Jagd auf die anderen beiden Ressourcen sei also hiermit offizell eröffnet
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.134 Beiträge
 
Delphi 12 Athens
 
#8

AW: GDI Handles einer Anwendung

  Alt 2. Sep 2015, 06:39
Hi Whookie,
das habe ich auch schon festgestellt, dass nach dem Anwendungsstart der erste Wert kurzzeitig immer höher ist (zwischen 3 und 4 bei mir) und dann geht die Anzahl wieder nach unten und ist dann aber stabil (solange nix gemacht wird -> neues Formular etc.).

Vielleicht bekommen wir ja doch noch raus, was das so für Ressourcen sind
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.079 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: GDI Handles einer Anwendung

  Alt 2. Sep 2015, 08:43
Sorry aber versteh mich nicht...
Wenn du dich selber nicht verstehst, wie sollen wir es?

Klar habe ich die gelesen und da steht das man anscheind irgendwo Leaks mit Cursors und Icons oder ähnlichem hat.
Okay, das übliche Lesen <> Verstehen.
Ich frage mal ganz konkret: Steigt bei dir denn die Zahl in der Spalte "All GDI" während alle anderen ungefähr konstant bleiben und somit nicht ansteigen?

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.
Was gibt es da zu erklären?
Der VirtualStringTree ist eine visuelle Komponente, die mithilfe der GDI/Canvas gezeichnet wird.
Das verbraucht GDI-Handles.
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.134 Beiträge
 
Delphi 12 Athens
 
#10

AW: GDI Handles einer Anwendung

  Alt 2. Sep 2015, 09:27
Zitat:
Zitat von Alex_ITA01:
Sorry aber versteh mich nicht...

Wenn du dich selber nicht verstehst, wie sollen wir es?
Eigentlich sollte das heißen:
Sorry aber versteh mich nicht falsch... Das war eher auf dich bezogen


Zitat:
Okay, das übliche Lesen <> Verstehen.
Ich frage mal ganz konkret: Steigt bei dir denn die Zahl in der Spalte "All GDI" während alle anderen ungefähr konstant bleiben und somit nicht ansteigen?
Nein da hast du schon Recht. Mir ging es ja lediglich darum zu verstehen, welche Handles in der Spalte "Alle GDIs" enthalten sind, die bei der Spalte "GDI Total" fehlen.


Zitat:
Was gibt es da zu erklären?
Der VirtualStringTree ist eine visuelle Komponente, die mithilfe der GDI/Canvas gezeichnet wird.
Das verbraucht GDI-Handles.
Das der VST eine visuelle Komponente ist weiß ich aber 100 GDI Handles für einen VST? Find ich irgendwie viel oder nicht?

Es wurde in früheren Beiträgen geschrieben, dass ihr bei euren größten Anwendungen auf max 750 GDI Handles kommt. Das heißt ja, dass ich eine Anwendung mit ein paar Fenstern und ein paar VSTs mal ganz locker auf die 750 Handles bringen kann. Und dann habe ich noch keinen Source dahinter, der irgendwas sinnvolles macht.
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz