Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Speicherverbrauch einzelner Componenten anzeigen ... (https://www.delphipraxis.net/151810-speicherverbrauch-einzelner-componenten-anzeigen.html)

erich.wanker 2. Jun 2010 13:47


Speicherverbrauch einzelner Componenten anzeigen ...
 
Hallo Leute,

Irgendwo in meiner Software ist der Wurm drinn ;-)

FBserver 2.1.3 <-> Zeos 6.6.6 <-> Delphi 7 Anwendung

Umso länger die Software läuft, umso mehr Speicher wird im Taskmanager angezeigt .. fängt mit 17 MB an und kommt nach 10 Stunden auf 700MB..

Eigentlich wird alles, was zur Laufzeit erzeuigt wird, wieder freigegeben.
(Fenster, Labels,Querys ect..)

Aber irgendwas wird anscheinend nicht freigegeben ... und ich find´s nicht !

Hab mir schon einiges von Sysinternals Process Utilities als auch memProof zugelegt - find aber nix!




Gibt es ein Tool, das folgende Möglichkeit bietet?

Auflistung der einzelnen Componenten inkl. Speicher zur Laufzeit:

Delphi-Quellcode:
Software.exe - Form1 (1300 KB)
                  |_  Label1 (1400 KB)
                  |_  Label2 (1300 KB)
                  |_  Panel 1 (1400 KB)
                       |_  Edit1 (1700 KB)
                       |_  Memo1 (1100 KB)

                   |_ TZQuery1 (2370.000KB)
Vielen Dank

Erich

jfheins 2. Jun 2010 14:01

Re: Speicherverbrauch einzelner Componenten anzeigen ...
 
Nach Komponenten aufzuschlüsseln dürfte witzlos sein, da der größte Teil des Speicherverbrauchs nicht-visuell ist.

Hol die lieber FastMM oder so, und lass dir die Memoryleaks anzeigen.

himitsu 2. Jun 2010 14:02

Re: Speicherverbrauch einzelner Componenten anzeigen ...
 
Sowas ist eh nicht ganz so einfach, da in der VCL viele Dinge nur nur von einer Komponente genutzt werden.

Ich würde erstmal FastMM, MemProf oder dergleichen ins Programm integrieren und mal nach Speicherlecks ausschau halten.

[edit] oh, wo kommt denn jfh plötlich her :shock:

erich.wanker 2. Jun 2010 14:08

Re: Speicherverbrauch einzelner Componenten anzeigen ...
 
Vielen Dank himitsu und jfheins :-)

Werd mich mit memProof noch mal beschäftigen ...
FastMM494 hab ich .. aber bin ehrlich gesagt, nicht schlauer geworden ..


Schönen Feiertag

Erich

hoika 2. Jun 2010 14:13

Re: Speicherverbrauch einzelner Componenten anzeigen ...
 
Hallo,

bei D7 geht auch MemCheck

MemCheck


Als 1. Unit in der dpr einbinden,
MemChk (oder so ähnlich) als ersten Befehl rein.
Anwendung laufen lassen,
nach dem Benede bleibt MemCheck beim 1. MemLeak stehen,
per Ctrl+F2 zeigt er dir alle Leaks an.

Am besten mit externen Debug-Symbolen und Stack-Frames compilieren,
ist aber auf der HP beschrieben.


Heiko

himitsu 2. Jun 2010 14:18

Re: Speicherverbrauch einzelner Componenten anzeigen ...
 
Ach ja, all diese Test-Codes prüfen nur auf Speicherleckt, welche über den Delphi-Speichermanager laufen.
Wenn sich etwas direkt bei Windows (z.B. VirtualAlloc) Speicher holt, dann fällt dieses nicht auf.

Was zeigt denn Delphi-Referenz durchsuchenGetHeapStatus so an Verbrauch an?



PS: Eventuell könnte dieses auch nur die krasse Auswirkung einer Speicherdefragmentierung sein.
(aber wir kennen ja dein Programm nicht und wissen vorallem nicht was wie oft gemacht wird)

hoika 2. Jun 2010 14:25

Re: Speicherverbrauch einzelner Componenten anzeigen ...
 
Hallo,

meistens sind es aber gerade eigene Programm-Fehler,
die sich hier sehr schön finden lassen.

Laß ihn doch erst einmal die Haupt-Leaks (seine eigenen ;) ) finden.


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz