Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#8

Re: Speichernutzung einer Komponente ermitteln?

  Alt 14. Jan 2010, 10:32
nur mal was zum Thema Fragmentierung:
Delphi-Quellcode:
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.
bin gespannt, was dir der Taskmanager darüber sagt

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
- ...
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat