![]() |
Memory Leak/ was vergessen?
Wie kann ich testen ob ich in meiner App einen Memory Leak habe bzw.
irgendwo vergessen habe ein Objekt vor dem Beenden Frei zu geben oä |
Das geht mit einem Profiler. Mir fällt nur im Moment keiner ein.
|
Moin Nebukadnezzar,
mir fällt gerade ein Tool ein: MemProof. |
Wie gehe ich denn damit um?
wie bekomme ich raus was an den adressen liegt? und woran erkenne ich nur die vergessenen FreeMem? ausserdem bekomme ich auch fehler aus Dephi Proceduren! |
Moin Nebukadnezzar,
tut mir leid, da kann ich Dir nicht weiterhelfen. Ich kenne das Tool nur dem Namen nach, und habe noch nie damit etwas gemacht. |
Zitat:
|
Re: Memory Leak/ was vergessen?
@Hansa: schau mal auf den Thread-Titel - dämmerts? :mrgreen:
|
Re: Memory Leak/ was vergessen?
:shock: :shock: :shock: Leuselator, Du willst doch hoffentlich nicht behaupten, Luckie hätte ein Memory Leak :mrgreen:
hier drum geht es : ![]() eigentlich aber hier drum: ![]() |
Zitat:
|
Re: Memory Leak/ was vergessen?
Heißen die Dinger nicht so?
|
Zitat:
Delphi-Quellcode:
erhalte ich folgendes Ergebnis:
procedure TfrmHauptmenue.Button1Click(Sender: TObject);
var i : integer; begin i := 1; repeat i := i + 1; lblClick(Sender); // created frm if i mod 100 = 0 then memo1.Lines.Add (IntToStr (i)+' '+SysUtils.TimeToStr (time)); close; // frm.Free; until i = 0; end; so wie es hier steht, steigert sich die Zeit um 100 Forms zu erzeugen exponentiell. Die ersten hundert brauchen 4 sec. die nächsten 8, dann 16 usw. Ist das free nicht auskommentiert, so läuft es linear alle 4 sek. 100 forms. Irgendwo wird da also schon wahrscheinlich was verbrutzelt und ist wegen meines obligatorisch überdimensionierten Gates-Speicher nicht so einfach zu sehen. Weiter bin ich damit aber jetzt auch nicht. Interessant wäre es, den tatsächlich beanspruchten Speicher zu sehen. |
Zitat:
|
Re: Memory Leak/ was vergessen?
ist doch ziemlich klar, was ich da mache, oder ?
|
Re: Memory Leak/ was vergessen?
Ich finde nur die Anzahl der Formulare, die erzeugt werden, ein bisschen übertrieben (mal abgesehen davon, dass du ziemliche Probleme bekommen solltest, wenn der Integer mal 64 bit lang wird)...
Den Zusammenhang zwischen Profiling und Memory Leak Checking, den du aufzeigst, kann man sowieso nicht ausnutzen -- wer sagt, dass der immer besteht? Im Übrigen arbeiten diese beiden Programme auch komplett unterschiedlich. Ein Profiler hängt sich wie ein Debugger an den Prozess an und macht permanente Stack Traces, ein Memory Leak Checker funktioniert AFAIK über API-Hooking. |
Re: Memory Leak/ was vergessen?
Ich teste lieber selber etwas, bevor ich ein fertiges (oder unfertiges :?:) Programm benutze und nicht weiß, was das genau macht. Aber das gehört in die Kategorie: "Wer weiß, wo es eine Komponente gibt, die genau das macht, was ich mir ersparen will ?" 8) und nicht hier her.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:24 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