![]() |
Memory Leaks beheben
Hallo zusammen!
Bei meinem Programm treten andauernd memory leaks auf, und das nicht zu knapp :D Hatte schon eine Auslastung von >500mb. Das heisst also, dass irgendwo ziemlich schlecht programmiert wurde :roll: Allerdings weiss ich nicht genau wo bzw. was das Problem ist. Das Programm ist auch nich gerade klein (über 15 Units) und benutzt unter anderem auch noch Andorra 2d. Wie behebt man soetwas? Ich hab schon gegoogelt und Programme gesucht die mir das anzeigen, allerdings hilft mir das auch nicht wirklich weiter. Gibt es für Delphi nicht evtl. so eine Art Addon eines Garbage Collectors wie bei C? Meine Fragen sind evtl. etwas übergreifender, und nicht mal eben zu erklären, aber vll. hat jemand Links oder Ähnliches die mir weiterhelfen könnten? (Auf einem niedrigen Niveau bitte, bin kein Profi wie Ihr hier.. eher das Gegenteil... :lol:) Wäre nett =) MfG |
AW: Memory Leaks beheben
Du solltest erstmal
![]() Dann kannst du eventuell schon eher einschätzen, was zum Problem werden könnte. MfG Fabian |
AW: Memory Leaks beheben
wenn ich in From1.Create ReportMemoryLeaksOnShutdown:=true setze kommt da undefinierter bezeichner.
welche unit muss ich dafür einbinden? |
AW: Memory Leaks beheben
Keine, da es in der implizit eingebunden Unit System definiert ist. Aber eben erst bei neueren Delphi-Versionen.
|
AW: Memory Leaks beheben
hab delphi 7
wenn ich System enbinden will kommt Bezeichner redefiniert. und nu? |
AW: Memory Leaks beheben
Ich sagte ja, System ist implizit eingebunden. Selbst wenn du die ganze Uses-Klausel entfernst, System wäre trotzdem eingebunden :wink:
Ich glaube FastMM wäre eine Möglichkeit. Bin da aber nicht gerade der beste Ansprechpartner für. Such doch einfach mal hier im Forum z.B. nach "Speicherleck" ... |
AW: Memory Leaks beheben
Suche mal in der DP nach "FastMM4" und "Optionen".
In der Ini von FastMM4 kannst Du einstellen, dass Dir eine komplexe Report-Datei erzeugt wird. Habe es aber jetzt nicht im Detail parat... |
AW: Memory Leaks beheben
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo nochmal.
Habe jetzt ein Programm welches mir anzeigt, in welcher Zeile des Codes die Leaks auftreten.. Es sind so einige Leaks :D direkt nach dem Start sogar 221 :( Davon kommen die meisten aber nur 1x vor, im Anhang befindet sich ein Ausschnitt von denen, die am Häufigstens vorkommen. Allerdings sehen die meisten Zeilen die mir das Programm liefert dann so aus:
Delphi-Quellcode:
Die meisten Fehler spuckt also Andorra 2D aus.
AdImageList.LoadFromFile( 'bilder/bilder.ail' );
temp := TAdImage.Create(FParent); Add(temp); LoadFromStream(ms); Rects.Add(AdRect(0,0,FWidth,FHeight)); new(ar); ar^ := ARect; inherited Add(ar); LoadFromXML(xml.Root); Allerdings weiss ich jetz überhaupt nicht wie ich die beheben soll, bzw. wie Andorra anders nutzen soll!? Andorra müsste aber doch eig. funktionieren, da es viele Spiele gibt die damit programmiert wurden etc. Bei mir steigt der Speicher zum Teil pro sekunde um 4-5 mb!!! Hilfe :pale: |
AW: Memory Leaks beheben
Gibst du die Form, bzw. Andorra auch wieder frei?
Jedenfalls steht da in dem Bild irgendwas von Form1 mit drin. Zitat:
Zitat:
Zitat:
|
AW: Memory Leaks beheben
Hallo,
Delphi-Quellcode:
Hast du auch irgendwo ein AdImageList.Clear bzw. AdImageList.Free ?
AdImageList.LoadFromFile( 'bilder/bilder.ail' );
Du lädst einen Haufen Sachen, erzeugst Speicher (new ()ar), aber ich sehe nirgendwo eine Freigabe nach der Benutzung. Unter D7 könntest du auch memcheck benutzen. Das hat den Vorteil, dass beim Beenden per Exeption die Stellen angeprungen werden, wo er Speicher angefordert wurde. Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:45 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