![]() |
Anzahl der GDI Objekte
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 |
Re: Anzahl der GDI Objekte
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. |
Re: Anzahl der GDI Objekte
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 |
Re: Anzahl der GDI Objekte
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... |
Re: Anzahl der GDI Objekte
Zitat:
Zitat:
Zitat:
![]() |
Re: Anzahl der GDI Objekte
Ok danke. Werde es mal testen und melde mich dann wieder :-)
Viele Grüße Alex |
Re: Anzahl der GDI Objekte
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.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:59 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 by Thomas Breitkreuz