![]() |
Alternative zu Application.Minimize für RAM-Freigabe
Hallo Community,
Ich verwalte das Minimieren von Forms immer selbst, da ich u.a. mit der TNA arbeite und dafür die Form verstecken muss.
Delphi-Quellcode:
Dabei verwende ich vorher Application.Minimize, um Speicher beim Minimieren freizugeben, was mit einem einfachen Hide-Befehl nicht geschiet. Ich würde jetzt gern wissen, warum Windows den Speicher beim Minimieren freigibt und ob es eine Alternative zum Freigeben von RAM beim Minimieren gibt. Mein Grund für diese Frage ist in meinem Kommentar im Delphi-Code enthalten.
procedure TForm2.proc_WM_SysCommand(var Msg: TWMSysCommand);
begin if ( (Msg.CmdType and $FFF0) = SC_MINIMIZE ) then begin { -- Speicher freigeben -- } Application.Minimize; // hier wird beim ersten Minimieren kurz die TaskBar angezeigt ;_; { -- TaskBar-Eintrag entfernen -- } ShowWindow(Application.Handle,SW_HIDE); { -- Form verstecken -- } self.Hide; end else inherited; end; Bitte um Hilfe. Nogge |
Re: Alternative zu Application.Minimize für RAM-Freigabe
Hallo,
seit wann gibt Application.Minimize Speicher frei? Damit wird doch nur die Anwendung minimiert. Dabei werden wahrscheinlich ein paar Ressourcen freigegeben, aber das macht dann Windows, und zwar automatisch beim Minimieren. Gruß xaromz |
Re: Alternative zu Application.Minimize für RAM-Freigabe
Zitat:
|
Re: Alternative zu Application.Minimize für RAM-Freigabe
Schau es Dir im TaskManager unter Speicherauslastung an. Wenn Du Dein Programm zum ersten mal regulär minimierst, wird ziemlich viel Speicher freigegeben.
|
Re: Alternative zu Application.Minimize für RAM-Freigabe
Zitat:
Evtl. zeigt auch der Taskmanager "irgendwas" an... |
Re: Alternative zu Application.Minimize für RAM-Freigabe
Äh, fürs Anzeigen von "Irgendetwas" wurde der TaskManager bestimmt nicht konzipiert...
|
Re: Alternative zu Application.Minimize für RAM-Freigabe
Zitat:
ich habe ein ähnliches problem. mein programm lädt zum start einige sounds mithilfe der bass.dll (um die sounds später quasi ohne große zeitverzögerung wiederzugeben). wenn die anwendung startet, hat sie -lass mich lügen:- 2000K belegt, laut taskmanager. dann werden die sounds geladen und schwupps sind 8000K belegt. wenn ich jetzt minimiere, sind's nur noch etwa 1000K. nach dme wiederherstellen dann etwa 1200K. das programm läuft wie geschmiert, es kommt nicht wieder auf die 8000K speicher. wenn ich aber nach dem wiederherstellen weitere sounds reinlade, dann steigt der speicherverbrauch wieder an. mich würde auch interessieren, wie man ohne zu minimieren den speicherverbrauch so reduzieren kann. aenogym |
Re: Alternative zu Application.Minimize für RAM-Freigabe
Könnte es vielleicht sein, dass der Taskmanager den physisch verbrauchen Arbeitsspeicher anzeigt. Heisst ausgelagerter Speicher wird dort nicht berücksichtigt.
Es gibt noch eine weitere Spalte "Virtueller Speicher". Die dürfte beim Speicherverbrauch interessanter sein. Und wenn du mal in die Hilfe des Taskmanager schaust, dann steht da: Zitat:
|
Re: Alternative zu Application.Minimize für RAM-Freigabe
Windows gibt den Speicher nicht frei, sondern lagert ihn auf die Pagefile aus. Das bekommt man aber nur zusehen, wenn man die Spalten auch anzeigt.
![]() Habs leider nur grad auf englisch, sorry. Option heißt Ansicht/Spalten auswählen und dann Virtueller Speicher oder so. Für genauere Analysen kann ich nur den ![]() Daniel |
Re: Alternative zu Application.Minimize für RAM-Freigabe
Nach meinen bisherigen Studien bin ich nicht der Meinung Daniels. Windows gibt wirklich den in der Spalte "Mem Usage" angegebenen Speicher teilweise frei, da sich der virtuelle Speicher während des Minimierens (und somit während des Freigebens von Speicher) nicht erhöht.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:15 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