![]() |
Speichernutzung einer Komponente ermitteln?
Moin !
Ist es eigentlich irgendwie möglich den Speicherverbrauch eine bestimmten Komponente zu ermitteln? Ich habe hier ein AdvStringGrid und ein QuantumGrid6. Mich würde mal interessieren, wer die Daten platzsparender im RAM ablegt. |
Re: Speichernutzung einer Komponente ermitteln?
Nein, es gibt keine Möglichkeit, da du nicht an alles rankommst und demnach nicht "zählen" kannst.
Du kannst höchstens die Komonenten dynamisch erzeugen und den Verbrauch vorher, mit dem Nachher vergleichen und jenachdem, wie gut du deine Testumgebung gestaltet hast, ist der Differenswert dann auch relativ genau. |
Re: Speichernutzung einer Komponente ermitteln?
Ok Danke für die Info.
|
Re: Speichernutzung einer Komponente ermitteln?
Das Problem hatte ich grad auch in meinem himXML (in der CheckLibs-Demo).
Da dort leider oftmals verschiedene Speichermanager verwendet werden und das auch noch gleichzeitig, also nicht alles z.B. über den DelphiMM läuft, kann man dort nur grob den globalen Verbrauch messen. |
Re: Speichernutzung einer Komponente ermitteln?
Mit dem ProcessExplorer kann man sich auch ganz gut einen Überblick verschaffen.
|
Re: Speichernutzung einer Komponente ermitteln?
Ganz genau geht es aber so eben nicht, da z.B. der DelphiMM mehr Speicher reserviert, als belegt ist.
Durch die Speicherfragmentierung und das "Unwissen" wieviel des Speichers zwar reserviert, aber nicht verwendet ist, kann es parktisch schon recht ungenau werden. |
Re: Speichernutzung einer Komponente ermitteln?
Moin !
Zitat:
In meinem Fall habe ich mal mit AdvStringGrid (TMS) und QuantumGrid6 (DevExpress) geschaut was passiert wenn ich ~700000 Werte eintrage (2 Spalten). Die Speicherlast die der Processexplorer anzeigt sagt schon alles: TMS -> ~245MB DevExpress -> ~90MB. Da kommt es auf 1-2MB mehr oder weniger nicht an :-) Das ist mal eindeutig :-) |
Re: Speichernutzung einer Komponente ermitteln?
nur mal was zum Thema Fragmentierung:
Delphi-Quellcode:
bin gespannt, was dir der Taskmanager darüber sagt
program Project1;
{$APPTYPE CONSOLE} uses SysUtils; var i: Integer; M: array[1..25000000] of Pointer; begin WriteLn(Length(M) * 10, ' Byte belegen - weiter mit [enter]'); ReadLn; for i := Low(M) to High(M) do GetMem(M[i], 10); WriteLn; WriteLn('98% freigeben - weiter mit [enter]'); ReadLn; for i := Low(M) to High(M) do if i mod 50 <> 0 then FreeMem(M[i]); WriteLn; WriteLn('nochmal 1% freigeben - weiter mit [enter]'); ReadLn; for i := Low(M) to High(M) div 2 do if i mod 50 = 0 then FreeMem(M[i]); WriteLn; WriteLn('das restliche 1% freigeben - weiter mit [enter]'); ReadLn; for i := High(M) div 2 + 1 to High(M) do if i mod 50 = 0 then FreeMem(M[i]); WriteLn; WriteLn('beenden - weiter mit [enter]'); ReadLn; end. ist war ein etwas krasses Beispiel - z.B. in D7: - 250 MB für GetMem + 100 MB für's Array - 500 MB belegt - nach Freigabe von 98% des Speichers immernoch 500 MB belegt - ... |
Re: Speichernutzung einer Komponente ermitteln?
Hallo,
zum genaueren ermitteln des Speicherverbrauchs gibt es VirtualMemoryMap von SysinternalTools: ![]() Gibt es zwar nur in Englisch ist aber dafür FreeWare. Fuchtel |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:01 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 by Thomas Breitkreuz