Minimieren gibt Speicher frei
-
Bei sicherheitskritischen Anwendungen ist das Swappen/Pagen übrigens eine Sicherheitslücke, da sich das Pagefile beliebig auslesen läßt und somit andere Prozesse Zugriff auf den Speicher haben. Eine dynamischere Speicherbehandlung ist sicher sinnvoller. Ansonsten, wenn es denn zwingend notwendig ist, einfach mal MSDN danach durchwühlen.
-
simon.gysi schrieb:
deine gründe und wünsche sind mir ziemlich suspekt.
es ist halt manchmal bequemer die symptome zu bekämpfen statt die ursachen. da kommt man schonmal auf so wirre ideen.
die wahl dieses subforums für diese frage unterstreicht die verwirrtheit noch.
-
Dieser Thread wurde von Moderator/in CStoll aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
fuerstenbrunn rockt schrieb:
simon.gysi schrieb:
deine gründe und wünsche sind mir ziemlich suspekt.
es ist halt manchmal bequemer die symptome zu bekämpfen statt die ursachen. da kommt man schonmal auf so wirre ideen.
die wahl dieses subforums für diese frage unterstreicht die verwirrtheit noch.ind WIN-APi hatte ich keine Rechte einen EIntrag zu eröffnen
-
Fellhuhn schrieb:
Bei sicherheitskritischen Anwendungen ist das Swappen/Pagen übrigens eine Sicherheitslücke, da sich das Pagefile beliebig auslesen läßt und somit andere Prozesse Zugriff auf den Speicher haben.
die relevanz für diesen thread ist mir nicht ganz klar. man hat in der regel keinen einfluss darauf, ob und wann das eigene programm ausgelagert wird.
so hohe sicherheitsvorkehrungen müssen imho bereits im system vorgesehen werden, und nicht in einem konkreten programm. wenn die auslagerungsdatei zum sicherheitsproblem wird, muss man darüber nachdenken ob man das richtige system für seine zwecke einsetzt.
-
SetProcessWorkingSetSize(GetCurrentProcess(), -1, -1);
-
DeltaLogic schrieb:
wir haben in letzter Zeit beobachtet, das wenn eine Anwendung minimiert, der Ram-Speicher drastisch sinkt, bei unserer Anwendung um 80%.
Natürlich können wir nicht sagen, Kunde minimier mal. Habt ihr das Phenomen auch schonmal gehabt, gibt es ne Api die man aufrufen kann die diesen Effekt erzeugt?
Gibt es eine Api, um einen bestimmten Prozess zum auslagern zu zwingen
Danke für die Hilfe im v******
Welchen Parameter machst Du dafür verantwortlich?
Was zeigen Die Werte im Working Set (GetProcessWorkingSetSize), vor undnach dem minimieren?
Verändert sich wirklich etwas?
-
An alle die das Problem interessiert:
mit SetProcessWorkingSetSize(GetCurrentProcess(), -1, -1); konnte es gelöst werden.
Laut Anzeige Taskmanager sinkt der RAM verbrauch deutlich. Die ANwendung die in unserem Test vorher 200 MB RAM verbraucht braucht jetzt 18 (Die Auslagerungsdatei bleibt gleich gross) Auffallend war, das vorher sowohl Auslagerungsdatei und RAM anstiegen und jetzt die Summe aus "Speicherauslastung" und "virtueller Speicher" die 200 MB von vorher ergeben.
Also vielen Dank für die Unterstützung, Problem ist gelöst. Sollten doch noch Probleme auftauchen die dadurch entstanden sind, so schreib ich die noch hier rein.
-
Ich kann mir nicht ganz vorstelllen, wie das ausswappen Deines Prozesses irgendetwas behebt.
Ein Leak könnte immer noch für das weitere Ansteigen sorgen.
Die Größe des Workingsets ändert sich dadurch ja nicht. Der Speicher wird höchstnes nicht mehr benutzt. Liegt aber als verbrauchter Speicher in der Swapfile rum.Nocheinmal meine Frage:
Welchen Parameter machst Du dafür verantwortlich?
-
1. RAM wird nicht "verbraucht"
2. Das was Du sinken siehst ist das "Working Set" und hat mit dem "belegten Speicher" überhaupt nichts zu tun
3. Blende Dir mal die Spalte "Größe des Virtuellen Speichers" ein; das ist das was zählt; und der sinkt nicht, egal was Du mit dem Working-Set machst...