Je suis constamment dans une situation similaire, même si je ne reçois jamais exactement le même message, et j'ai fait quelques tests.
D'après ce que j'ai compris, la ressource principale qui est mise à rude épreuve ici, est la mémoire GPU. Mais cela n'indique pas nécessairement que vous êtes à court de cette ressource en général. Cela pourrait simplement signifier que le Desktop Window Manager a détecté que vous fonctionnez si bas qu'une fonction spécifique de ce service pourrait être désactivée pour libérer plus de mémoire.
Pour tester cela, j'ai commencé à ouvrir des applications gourmandes en mémoire GPU :
C'est une utilisation un peu plus que la moyenne dans ma configuration triple écran avec quelques acteurs clés qui tournent (Visual Studio 2012 (accélération matérielle activée), PhpStorm, Aptana Studio, Chrome, Firefox, IE, …). Donc, oui, si vous n'avez qu'une carte de 1 Go et que ce serait votre scénario d'utilisation habituel, vous auriez déjà un problème.
J'ai dû pousser un peu plus loin et démarrer quelques autres instances de Visual Studio…
…jusqu'à ce qu'il approche la barre des 1,5 Go et…
SNAP ! Cela a conduit Windows à tuer complètement le desktop compositing (et à libérer de précieuses ressources).
Maintenant, quand je suis déjà à un niveau critique, et que je lance une application qui utilise une quantité excessive de mémoire GPU en plein écran , je peux même dépasser cette limite critique. Voici le résultat après avoir fait tourner Black Mesa pendant un certain temps sur 2560x1440 à max details :
Donc, on peut en déduire deux choses. Alors que dépasser la barre des 75% sur le bureau peut obliger Windows à désactiver la composition du bureau, lorsqu'on atteint la même limite dans une application plein écran (et, éventuellement, en quittant cette application) la composition du bureau n'est pas désactivée.
La deuxième chose est que, pendant que vous êtes dans votre jeu, vous pouvez avoir l'idée “Hé, j'ai assez de ressources pour faire tourner ce jeu, pourquoi n'ai-je pas assez de ressources pour le bureau ? La raison est que les deux ont besoin de mémoire en même temps.
Windows ne pourra peut-être vous parler de la situation de la mémoire qu'après que vous ayez quitté le jeu. Donc, lorsque je démarre un autre Visual Studio après être sorti de Black Mesa…
Alors, que pouvons-nous faire à ce sujet ?
Obtenir plus de mémoire GPU
Doucement et simplement.
Désactiver la composition du bureau (par processus)
Comme cela a déjà été suggéré, vous pouvez désactiver la composition du bureau pour un seul exécutable. Cela a pour effet de désactiver temporairement la composition du bureau pendant que l'exécutable est en cours d'exécution. Cela a considérablement réduit la consommation globale de mémoire pendant que l'application est exécutée dans mes tests :
L'avis de prime mentionne que cela n'est pas souhaitable, car cela peut représenter beaucoup de travail.
Désactiver la composition du bureau (globalement)
Je ne considérerais pas cela comme une solution car la composition du bureau est généralement souhaitée. Mais voici où la désactiver :
Je veux juste me débarrasser de ce message ennuyeux !
Juste parce que vous enlevez l'avertissement ” **Votre batterie est presque vide ! ne signifie pas que vous pouvez parler plus de 10 minutes. En fait, votre téléphone s'éteindra probablement tout simplement et c'est tout. Je n'ai jamais pensé que le message pouvait être éteint et je ne vois pas comment cela pourrait être considéré comme un avantage. Vous pensez peut-être que vous savez mieux que cela, mais ce n'est pas le cas. Si le système vous dit qu'il manque de ressources, c'est le cas.
Mais ce n'est pas le cas ! Je sais !
Ok, supposons que Windows n'est pas assez intelligent pour détecter la situation particulière dans laquelle vous vous trouvez et que le message d'avertissement est simplement un inconvénient gênant. Et maintenant ?
Le fait est que, personnellement, je suis aussi concerné par ce problème et c'est très ennuyeux pour moi. Parce que je ne comprends même pas ce message d'avertissement. Windows change simplement mon profil de couleur et c'est tout. Et j'aime bien ça en fait.
Quand ça arrive, je lance généralement rapidement un script qui appelle
net stop uxsms & net start uxsms
Voici le script complet. Il va ouvrir un prompt UAC et redémarrer le service pour qu'il puisse être déclenché de n'importe où. Je l'ai épinglé au menu de démarrage.
@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
Cela redémarre le gestionnaire de fenêtres du bureau et me ramène à mon bureau composé (et cela libère beaucoup de ressources dans le processus, yay).
Sachant cela, vous pouvez aussi vous construire un environnement de jeu spécial où vous arrêtez le service avant de démarrer le jeu pour combattre tout ce comportement. Cependant, cela entraînera un comportement identique à la désactivation de la composition du bureau pour un seul exécutable par le biais des propriétés du fichier.