Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Speicherauslastung (https://www.delphipraxis.net/53116-speicherauslastung.html)

TheMiller 10. Sep 2005 14:10


Speicherauslastung
 
Hallo,

wenn ich im TaskManager nachsehe, benutzt mein Programm 1,8MB. Wenn ich jetzt Form2 öffne und mit dem OpenDialog arbeite auf einmal 5MB. Wenn ich mit FREE Form2, die ListView und den OpenDialog freigebe, dann ändert sich am speicher nix. Wie kommt das? Will wieder auf die 1,8MB runter...

Danke

PierreB 10. Sep 2005 14:25

Re: Speicherauslastung
 
Versuch mal destroy anstatt free.

Selbst wenn es nicht geht, 5MB sind heute mehr als passabel. Wenn ich da so an die Speicherauslastung von Photoshop denke...

Luckie 10. Sep 2005 14:30

Re: Speicherauslastung
 
Zitat:

Zitat von PierreB
Versuch mal destroy anstatt free.

Und warum? Free ruft auch nur Destroy auf, nur mit dem Unterschied, dass es vorher prüft, ob das Objekt überhaupt existiert.

Ich gehe mal davon aus, dass der Speich zwar freigegeben wird, ihn der Delphi Speichermanager nur nicht an Windows zurückgibt, um ihn beim nächsten mal nicht erst wieder von Windows anfordern zu müssen.

TheMiller 10. Sep 2005 14:33

Re: Speicherauslastung
 
Und wie kann ich das nun verhindern?

Mit den 5MB... klar ist es akzeptabel, aber warum soll ich meinen Speicher zumüllen, wenn ich es nicht brauche, verstehste? Es stört mich halt (ist so'n Gefühl aus dem Bauch)

Luckie 10. Sep 2005 14:39

Re: Speicherauslastung
 
Nun ja, Speicher von Windows anfordern dauert nun mal ziemlich lange, deswegen gibt der Speichermanager den Speicher nicht wieder zurück. Lösung: benutze einen anderen Speichermanager.

TheMiller 10. Sep 2005 14:41

Re: Speicherauslastung
 
OK, danke

neolithos 11. Sep 2005 03:17

Re: Speicherauslastung
 
Code:
BOOL SetProcessWorkingSetSize(
  HANDLE hProcess,
  SIZE_T dwMinimumWorkingSetSize,
  SIZE_T dwMaximumWorkingSetSize
);
Damit kann man den Windows Speichermanager auffordern Seiten wieder freizugeben.

Delphi-Quellcode:
SetProcessWorkingSetSize(GetCurrentProcess, 0, 0);
Obwohl ich kein Freund davon bin, denn damit tritt man die Arbeit von einigen Leuten mit Füßen.
Zweitens holt sich schon Windows den Speicher, wenn es ihn braucht.

tigerman33 11. Sep 2005 09:59

Re: Speicherauslastung
 
Ich glaube Windows behandelt den Speicher als "zwar im Moment nicht von der App gebraucht, aber noch zu dieser gehörig. Wenn ich ihn brauch, kann ich ihn aber haben." Das ist mit Sicherheit nicht der technische Ausdruck. Für den muss ich nochmal nachgucken.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:40 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