Hallo zusammen,
Wenn ich meine Programme mit dem Taskmanager beobachte stelle ich fest, dass zur Laufzeit nicht immer der Arbeitspeicher ganz frei gegeben wird. Ich habe mir jetzt eine Minianwendung geschrieben um mir das genauer anzuschauen.
Hier der Code:
Delphi-Quellcode:
unit UnitDB_Prozess;
interface
uses classes, dialogs, sysutils;
type
{$REGION 'Typendeklaration Prozess'}
TRecProzess =
class(TObject)
private
FFirmenNr_ID : integer;
FProzess_ID : integer;
FName :
string;
protected
public
procedure Clear;
procedure Copy(iQ: TRecProzess);
function ISEqual(iQ: TRecProzess): boolean;
function Clone: TRecProzess;
property FirmenNr_ID: integer
read FFirmenNr_ID
write FFirmenNr_ID;
property Prozess_ID: integer
read FProzess_ID
write FProzess_ID;
property Name:
string read FName
write FName;
end;
{$ENDREGION}
implementation
{$REGION 'TRecProzess'}
procedure TRecProzess.Clear;
begin
FFirmenNr_ID := 0;
FProzess_ID := 0;
FName := '
';
end;
procedure TRecProzess.Copy(iQ: TRecProzess);
begin
FFirmenNr_ID := iQ.FirmenNr_ID;
FProzess_ID := iQ.Prozess_ID;
FName := iQ.
Name;
end;
function TRecProzess.ISEqual(iQ: TRecProzess): boolean;
begin
result :=
(FFirmenNr_ID = iQ.FirmenNr_ID)
and
(FProzess_ID = iQ.Prozess_ID)
and
(FName = iQ.
Name);
end;
function TRecProzess.Clone: TRecProzess;
begin
result := TRecProzess.Create;
result.Copy(self);
end;
{$ENDREGION}
end.
Und mein "Test"
Delphi-Quellcode:
procedure TForm6.Button1Click(Sender: TObject);
var
FObjListe : TObjectList;
i : integer;
begin
FObjListe := TObjectList.Create;
for i := 0 to 500000 - 1 do
begin
FObjListe.Add(TRecProzess.Create)
end;
ShowMessage('Hallo');
FObjListe.Free;
end;
Vor dem Button drücken sagt der Taskmanager 3.516 K
Vor ShowMassage dann 17.252 K
Danach dann 6.332 K
Warum komme ich nicht mehr auf die 3.516 K ??
Grüße
Thomas