Ist es möglich, Programme in Windows manuell an den virtuellen Speicher zu senden?

Ist es möglich, Programme in Windows manuell an den virtuellen Speicher zu senden?

Wenn Sie viele Programme geöffnet haben und die Speicher-/CPU-Auslastung Ihres Computers zu hoch ist, möchten Sie möglicherweise ein Programm schließen, ohne seinen Status zu verlieren (es in den virtuellen Speicher zu senden) und das Programm später fortsetzen. Dies wird automatisch vom Betriebssystem erledigt, aber das Betriebssystem weiß nicht, wie lange Sie Ihr Programm anhalten möchten, sodass es schließlich sehr langsam wird, indem es versucht, Teile jedes Programms im Speicher zu behalten und andere Teile in den virtuellen Speicher zu verschieben. Ein ganzes Programm manuell in den virtuellen Speicher zu senden und es dann bei Bedarf im selben Status abzurufen, wäre eine nette Funktion. Gibt es dafür ein Tool? Oder kann man es schreiben?

Antwort1

Ihre Programme werden ständig im virtuellen Speicher ausgeführt. (Die Windows-Terminologie in dem Dialogfeld, in dem Sie die Größe der Auslagerungsdatei festlegen, ist völlig irreführend.)

Sie möchten, dass ein Programm zwangsweise ausgelagert wird. Dies ist nicht direkt möglich.

Daher wird es letztendlich sehr langsam, da versucht wird, Teile jedes Programms im Speicher zu behalten und andere Teile in den virtuellen Speicher auszulagern.

Das passiert nicht. Speicherseiten, auf die nicht zugegriffen wird, sind immer verfügbar, um für andere Zwecke freigegeben zu werden (und bei Bedarf auf die Festplatte geschrieben zu werden); das Betriebssystem „versucht nicht, Teile jedes Programms“ im Speicher zu behalten, unabhängig davon, ob auf sie zugegriffen wird. Wenn nicht auf sie zugegriffen wird, was normalerweise bei privaten Seiten eines inaktiven Programms der Fall ist, bleiben sie nur so lange im Speicher, bis sie durch die Anforderungen anderer Programme beansprucht werden. (Bis dahin hat es keinen Sinn, sie auszulagern, oder?)

Unter Windows XP führte das Minimieren des Windows einer App zu einer Bereinigung des Arbeitssatzes, aber ich glaube, XP war das letzte Betriebssystem, bei dem dies der Fall war.

Wenn Sie dies jedoch unbedingt tun möchten, können Sie das VMmapTool von SysInternals verwenden. Beim Start werden Sie aufgefordert, einen Prozess auszuwählen. Tun Sie dies und wählen Sie dann Ansicht | Leerer Arbeitssatz.

Beachten Sie jedoch, dass hierdurch nur Seiten in die geänderte oder Standby-Seitenliste freigegeben werden. (Und das nur für Seiten, die sich nicht in den Arbeitssätzen anderer Prozesse befinden.) Seiten, die in die geänderte Liste verschoben werden, werden in die Auslagerungsdatei geschrieben und dann in die Standby-Liste verschoben. Seiten in der Standby-Liste gelten als „verfügbar“, aber bis sie für einen anderen Zweck wiederverwendet werden, enthalten sie noch immer den Inhalt des ursprünglichen Prozesses.

Das Nettoergebnis ist genau dasselbe, was Windows tun würde, wenn der verfügbare Speicher knapp wird – Sie tun es einfach früher, bevor derartige Anforderungen tatsächlich bestehen.

Ausführlichere Informationen finden Sie im Kapitel „Speicherverwaltung“ vonWindows-Internavon Solomon, Russinovich und Ionescu.

verwandte Informationen