Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#4

AW: Leak suche mit FastMM4

  Alt 24. Jul 2010, 15:58
Natürlich suchst du erst mal nach den speziellen Klassen wie TSQLiteDatabase.Create.
Viele Speicherlecks sind auch abhängig von anderen nicht freigegebenen Objekten.
Es ist wahrscheinlich, dass wenn du die Lecks der Klasse TSQLiteDatabase geschlossen hast,
damit auch einige TStringList Lecks verschwinden werden.

Du musst auch zwischen "gefährlichen" und "ungefährlichen" Speicherlecks unterscheiden.
Gefährlich wird ein Speicherleck erst dann, wenn es im Programmablauf immer wieder auftritt.
Irgendwann hat es den ganzen Hauptspeicher aufgefressen.
Ein Leck, dass nur einmalig auftritt ist dagegen harmlos.
Gleichwohl sollte man auch einmalige Lecks schliesen, da es bei der Jagd auf gefährliche Lecks
als Störfeuer wirkt.

So findet man die gefährlichen Lecks:
1.) Programm starten und ein ein bestimmtes Formular einmal öffen und dann das Programm beenden.
Speicherlecks notieren.
2.) Genau gleich wie bei 1.) nur diesmal das Formular 10x öffnen und schliesen.
Dabei auch die Buttons, Menues, usw. ausführlich benützen.

Durch Vergleich der Speicherlecks von 1.) und 2.) findet man die gefährlichen Lecks.
Dabei sollte man sich auf die Lecks mit hoher Stückzahlen und möglichst spezifischem Klassennamen konzentrieren.
205 * TStringList ist schwer zu finden aber 10 * TOptionDialogForm lässt sich leicht entdecken.

Gute Jagd
  Mit Zitat antworten Zitat