AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Anzahl der GDI Objekte

Ein Thema von Alex_ITA01 · begonnen am 4. Aug 2008 · letzter Beitrag vom 4. Aug 2008
Antwort Antwort
Alex_ITA01

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

Anzahl der GDI Objekte

  Alt 4. Aug 2008, 09:23
Hallo zusammen,
ich habe ab und zu das Problem, dass wenn ich viele Fenster in meiner Anwendung öffne (auf denen sind wirklich viele Komponenten), dass es zu der Fehlermeldung "Nicht genügend Speicher" kommt. Da ich mittlerweile weiß, dass es evtl. mit den GDI-Objekten zu tun hat, habe ich im Taskmanager nachgeguckt und da sind wirklich viele drinne. Wenn ich jetzt die "vielen" Fenster wieder schließe, sehe ich aber im Taskmanager nicht, dass die Anzahl der GDI-Objekte sich wieder verringert. Sie steigt immer nur, wenn ich das Fenster öffne (diese Fenster werden dynamisch erzeugt). Weiß jemand, ob es möglich ist, die Anzahl der GDI-Objekte wieder zu "verringern"?
Ich hoffe, ihr versteht mein Problem...
Habe BDS2006 und Windows XP + SP3
Viele Grüße
Alex
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Anzahl der GDI Objekte

  Alt 4. Aug 2008, 09:32
Es scheint das du die Fenster nicht wieder freigiebst und ein "klitzekleines" Ressourcenloch hast.
Zeig mal ein bischen Code was du so beim öffnen und schließen machst.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#3

Re: Anzahl der GDI Objekte

  Alt 4. Aug 2008, 09:39
Leider ist das Software aus unserer Firma und die kann/darf ich hier nicht als Code darstellen.
Ich werde mir das mal angucken.
Aber meines Erachtens ist es doch richtig, wenn ich dieses Formular zur Laufzeit mit ".Create" und später mit ".Free" wieder frei gebe...
Gibt es denn irgendwelche Möglichkeiten, wer mir da dieses Speicherleck verursacht? (z.B. welches Formular oder sowas)

Viele Grüße
Alex
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Benutzerbild von spaxxn
spaxxn

Registriert seit: 19. Nov 2004
253 Beiträge
 
Delphi XE2 Enterprise
 
#4

Re: Anzahl der GDI Objekte

  Alt 4. Aug 2008, 09:45
Du sollst ja auch nicht komplette Sourcen rausrücken, sondern nur den Teil in dem das Formular erzeugt wird und später wieder freigegeben wird(/werden sollte).

Das hat hier wohl jeder schon mal gemacht/gesehen...
"Hey Süße,
hol mir mal was zu trinken! Du wirst schon wieder hässlich!"

Zitat eines Betrunkenen
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Anzahl der GDI Objekte

  Alt 4. Aug 2008, 09:45
Zitat von Alex_ITA01:
Leider ist das Software aus unserer Firma und die kann/darf ich hier nicht als Code darstellen.
Ich werde mir das mal angucken.
Du sollst ja nicht alles posten.

Zitat von Alex_ITA01:
Aber meines Erachtens ist es doch richtig, wenn ich dieses Formular zur Laufzeit mit ".Create" und später mit ".Free" wieder frei gebe...
Nur bei Modalen Dialogen. Bei Nicht-Modalen sollte man .Release nehmen.

Zitat von Alex_ITA01:
Gibt es denn irgendwelche Möglichkeiten, wer mir da dieses Speicherleck verursacht? (z.B. welches Formular oder sowas)
Häng mal FastMM rein. Das meldet so ziemlich alle Fehler.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Alex_ITA01

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

Re: Anzahl der GDI Objekte

  Alt 4. Aug 2008, 09:47
Ok danke. Werde es mal testen und melde mich dann wieder
Viele Grüße
Alex
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Benutzerbild von Remko
Remko

Registriert seit: 10. Okt 2006
Ort: 's-Hertogenbosch, Die Niederlande
222 Beiträge
 
RAD-Studio 2010 Arc
 
#7

Re: Anzahl der GDI Objekte

  Alt 4. Aug 2008, 13:37
So you have a GDI Object (handle) leak does not have to be in your code... Watch the counter in task manager and see what actions allocate a GDI object but do not release on close. There is a default limit of 10.000 gdi objects per user (read terminal server session) which is set by a registry key. Maybe you should search the MS KB for gdi object leak.
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:45 Uhr.
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