AGB  ·  Datenschutz  ·  Impressum  







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

Memoryleak bei dynamischen Forms ?

Ein Thema von Ghostwalker · begonnen am 28. Jun 2007 · letzter Beitrag vom 28. Jun 2007
Antwort Antwort
Seite 2 von 2     12   
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#11

Re: Memoryleak bei dynamischen Forms ?

  Alt 28. Jun 2007, 10:12
Ach Gott, der Windows-Taskmanager... Der zeigt das sowieso nicht richtig an (meine Erfahrung). Hab mich mal totgesucht an einem Speicherleck, ähnlich wie deins. Da war aber nix. Trotzdem hatte mein Programm angeblich 5MB, die es nicht freigegeben hat...

Das FastMM nichts angemeckert hat, war da auch nichts.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#12

Re: Memoryleak bei dynamischen Forms ?

  Alt 28. Jun 2007, 10:29
caFree hat erstmal nix mit MDI zu tun, sonst würden meine Formulare garnicht freigegeben werden (ein Unterformular belegt lt. TM ca. 5 MB-Speicher wenn es erzeugt und angezeigt ist !!).

Also..ich hab insgesamt 8 Formulare:

Hauptformular (THauptformular) -> erzeugt wird das über Application.CreateForm.

Auf diesem befindet sich eine Listbox zur Auswahl des anzuzeigenden Formulars, sowie ein Button, der
das Formular erzeugt und anzeigt (ruft mit itemindex der Listbox die Methode ShowForm auf).


Form1 - Form7 (mit entsprechender Klasse TForm1-TForm7). Die werden dynamisch via ShowForm-Methode
des Hauptformulars erzeugt und angezeigt. Um diese Formulare automatisch zu schließen, wird nach der
Erzeugung die Methode DoCloseSubForm im onClose-Event als handler hinterlegt, was bewirkt (zumindest sollte es das), das das Formular beim Schließen (via X-Button) gleich freigegeben wird.

Nach dem Programmstart gehe ich wie folgt vor:

->wähle form2 in der Listbox aus und drücke den Button (form2 wird erzeugt und angezeigt)
->Speicherbedarf steigt um 5 MB an
->schließe form2 via x-button ->Speicherbedarf sinkt um 4250 Kb (650Kb zu wenig, sollte ja eigentlich 5 MB sein !)

->wähle form 6 in der Listobx aus und drücke den Button (form6 wird erzeugt und angezeigt)
->Speicherbedarf steigt um 5 MB an
->schließe form6 via x-button ->Speicherbedarf sinkt um 4250 Kb( wieder 650 Kb zu wenig).

->wähle ich erneut form2 aus und zeige es an erhöt sich der Speicherbedarf nur noch um 4250 Kb.
->Beim schließen werden dann auch 4250Kb wieder freigegeben.


Hoffe das ich das jetzt soweit klären konnte

@alzaimar

Entweder das, oder es wird sich (bei o.g. vorgehen) gewollt etwas gehalten (eben für erneutes anzeigen).
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#13

Re: Memoryleak bei dynamischen Forms ?

  Alt 28. Jun 2007, 13:12
Hallo,

OK, jetzt habe sogar ich es verstanden

Also der Taskmanager ist nicht wirklich aussagekräftig
Es kann sein, dass die VCL intern noch etwas cachet
gugg dir doch einfach das bissel VCL-Code an


Heiko
Heiko
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#14

Re: Memoryleak bei dynamischen Forms ?

  Alt 28. Jun 2007, 13:57
Es kann sein, das der Memorymanager Sachen vorhält, aber mir fällt da eine Anekdote von den Entwicklern des MS-SQL-Servers ein:
Die verzichten voll und ganz auf das Windows-Management (aus eigenem Hause) und haben sich ihr eigenes Memory Management gebastelt. Soweit ich mich erinnere, gibt Windows den Speicher nach gutdünken frei.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 12:39 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