Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Memory Leak/ was vergessen? (https://www.delphipraxis.net/2122-memory-leak-vergessen.html)

Hansa 26. Feb 2004 03:10

Zitat:

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.

d3g 26. Feb 2004 18:02

Zitat:

Zitat von Hansa
Delphi-Quellcode:
i := 1;
repeat
   i := i + 1;
   // ...
until i = 0;

4,3e9 Formulare? :shock:

Hansa 26. Feb 2004 19:07

Re: Memory Leak/ was vergessen?
 
ist doch ziemlich klar, was ich da mache, oder ?

d3g 27. Feb 2004 14:47

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.

Hansa 27. Feb 2004 16:28

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 01:12 Uhr.
Seite 2 von 2     12   

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 by Thomas Breitkreuz