AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SetLength -> Zu wenig Arbeitsspeicher?

Ein Thema von AJ_Oldendorf · begonnen am 11. Aug 2010 · letzter Beitrag vom 18. Aug 2010
 
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#22

AW: SetLength -> Zu wenig Arbeitsspeicher?

  Alt 11. Aug 2010, 14:39
Moin,
[...]Achja, was mir mal aufgefallen war:

SetLength(ArrayEinesTyps, 2);

rufe ich das einmal auf, so wird der Speicher einmal für zwei ArrayEintraege belegt.
Rufe ich das nochmals auf, so wird ungenutzter Speicher dafür neu belegt, der alte aber nicht freigegeben, laut Taskmanager bleibt der RAM genutzt. [...]
Bist du dir da sicher? Ich behaupte mal so, dass sogut wie keiner das alte Array "freigibt". Und MemoryLeaksOnShutdown meldet da ja auch nichts. Aber ich teste es einfach mal.

So, also mit folgenden Code bleibt der RAM Verbauch konstant bei 44 MiB (und dabei ist das Array selber schon ~ 40 MB groß):
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    x : array of Integer;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  SetLength(x, 10000000);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  while True do
    Button1Click(nil);
end;
Übrigens wegen der Defragmentierung: Stimmt, naja wer sagt da das man x64 nicht braucht Da kann es einen egal sein (sofern die Anwendungd das nutzt).

MfG
Fabian
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler

Geändert von xZise (11. Aug 2010 um 14:56 Uhr) Grund: SetLength() gibt frei!
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:41 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-2025 by Thomas Breitkreuz