Ich befinde mich ständig in einer ähnlichen Situation, obwohl ich nie genau die gleiche Nachricht erhalte, und habe ein paar Tests durchgeführt.
Nach meinem Verständnis ist die Kernressource, die hier unter Stress steht, der GPU-Speicher. Aber das bedeutet nicht unbedingt, dass Ihnen diese Ressource generell ausgeht. Es könnte einfach nur bedeuten, dass der Desktop Window Manager festgestellt hat, dass Sie so wenig Speicher haben, dass eine bestimmte Funktion dieses Dienstes deaktiviert werden könnte, um mehr Speicher freizugeben.
Um dies zu testen, habe ich begonnen, GPU-Speicher-intensive Anwendungen zu öffnen:
Dies ist eine etwas überdurchschnittliche Nutzung auf meinem Dreifachbildschirm-Setup mit einigen wenigen laufenden Key-Playern (Visual Studio 2012 (Hardware-Beschleunigung aktiviert), PhpStorm, Aptana Studio, Chrome, Firefox, IE, …). Also, ja, wenn Sie nur eine 1-GB-Karte haben und dies Ihr übliches Nutzungsszenario wäre, hätten Sie bereits ein Problem…
Ich musste noch etwas weiter gehen und ein paar weitere Visual Studio-Instanzen starten…
…bis es sich der 1,5-GB-Marke näherte und…
SNAP! Dies veranlasste Windows dazu, das Desktop-Compositing vollständig zu beenden (und einige wertvolle Ressourcen freizugeben).
Nun, wenn ich mich bereits auf einem kritischen Niveau befinde und eine Anwendung starte, die übermäßig viel GPU-Speicher im Vollbildmodus verbraucht, kann ich sogar über diese kritische Grenze hinausgehen. Hier ist das Ergebnis, nachdem ich Black Mesa eine Zeit lang auf 2560x1440 bei maximalen Details ausgeführt habe:
Daraus lassen sich zwei Dinge ableiten. Während das Überschreiten der 75%-Marke auf dem Desktop Windows dazu zwingen kann, die Desktop-Zusammenstellung zu deaktivieren, wird die Desktop-Zusammenstellung beim Erreichen der gleichen Grenze in einer Vollbildanwendung (und optional beim Beenden dieser Anwendung) nicht deaktiviert.
Das zweite ist, dass Sie, während Sie in Ihrem Spiel sind, auf die Idee kommen können: “Hey, ich habe genug Ressourcen, um dieses Spiel auszuführen, warum habe ich nicht genug Ressourcen für den Desktop? Der Grund dafür ist, dass beide gleichzeitig Speicher benötigen.
Möglicherweise kann Windows Ihnen erst nach dem Beenden des Spiels etwas über die Speichersituation sagen. Wenn ich also ein weiteres Visual Studio nach dem Beenden von Black Mesa starte…
Also, was können wir dagegen tun?
Mehr GPU-Speicher erhalten
Süß und einfach.
Desktop-Zusammensetzung deaktivieren (pro Prozess)
Wie bereits vorgeschlagen, können Sie die Desktop-Zusammensetzung für eine einzelne ausführbare Datei deaktivieren. Dies hat zur Folge, dass die Desktop-Zusammensetzung vorübergehend deaktiviert wird, während die ausführbare Datei ausgeführt wird. Dadurch wurde der Gesamtspeicherverbrauch während der Ausführung der Anwendung in meinen Tests drastisch reduziert:
In der Bounty-Notiz wird erwähnt, dass dies unerwünscht ist, da dies potenziell viel Arbeit bedeutet.
Desktop-Zusammensetzung deaktivieren (global)
Ich würde dies nicht als Lösung betrachten, da die Desktop-Zusammensetzung normalerweise erwünscht ist. Aber hier ist die Stelle, wo man sie deaktivieren kann:
Ich möchte nur die lästige Meldung loswerden!
Nur weil Sie die Warnung ” Ihr Akku ist fast leer! Sie können nur noch 10 Minuten lang sprechen!“ bedeutet nicht, dass Sie länger als 10 Minuten sprechen können. Tatsächlich wird sich Ihr Telefon höchstwahrscheinlich einfach abschalten und das war’s. Nun, was ist das für eine Verbesserung?
Ich bin nie davon ausgegangen, dass die Nachricht abgeschaltet werden kann, und ich sehe nicht, wie das als Vorteil angesehen werden könnte.
Sie denken vielleicht, Sie wissen es besser, aber das tun Sie nicht. Wenn das System Ihnen sagt, dass ihm die Ressourcen ausgehen, dann ist es so.
Aber das ist es nicht! Ich weiß!
Ok, nehmen wir an, Windows ist einfach nicht schlau genug, um die spezielle Situation, in der Sie sich befinden, zu erkennen, und die Warnmeldung ist einfach nur eine lästige Unannehmlichkeit. Was nun?
Die Sache ist die, dass ich persönlich auch davon betroffen bin, und es geht mir höllisch auf die Nerven. Denn ich bekomme nicht einmal diese Warnmeldung. Windows wechselt einfach mein Farbprofil und das war’s. Und das gefällt mir eigentlich.
Wenn es passiert, führe ich normalerweise schnell ein Skript aus, das
net stop uxsms & net start uxsms
Hier ist das vollständige Skript. Es öffnet eine UAC-Eingabeaufforderung und startet den Dienst neu, so dass er von überall ausgelöst werden kann. Ich habe es an das Startmenü angeheftet.
@if (1==1) @if(1==0) @ELSE
@echo off&SETLOCAL ENABLEEXTENSIONS
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"||(
cscript //E:JScript //nologo "%~f0"
@goto :EOF
)
NET STOP uxsms
NET START uxsms
@goto :EOF
@end @ELSE
ShA=new ActiveXObject("Shell.Application")
ShA.ShellExecute("cmd.exe","/c \""+WScript.ScriptFullName+"\"","","runas",5);
@end
Dies startet den Desktop Window Manager neu und bringt mich zurück zu meinem zusammengesetzten Desktop (und setzt dabei eine Menge Ressourcen frei, juhu).
In diesem Wissen können Sie sich auch eine spezielle Spielumgebung konstruieren, in der Sie den Dienst vor dem Start des Spiels stoppen, um dieses ganze Verhalten zu bekämpfen. Dies führt jedoch zu einem identischen Verhalten wie das Deaktivieren der Desktop-Komposition für eine einzelne ausführbare Datei über die Dateieigenschaften.