Zitat von
jbg:
Und ich frage mich, was ein Profiler mit einem Memory Leak Such-Programm zu tun hat.
Der Gedanke ist nicht von der Hand zu weisen. Aber nicht sofort zu erkennen. Ich habe eine Testreihe gebaut, so eine Art eigener Profiler. Sobald ich den starte und zwar so :
Delphi-Quellcode:
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;
erhalte ich folgendes Ergebnis:
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.