Я постоянно нахожусь в подобной ситуации, хотя я никогда не получаю то же самое сообщение и провёл небольшое тестирование.
Насколько я понимаю, основной ресурс, который находится под нагрузкой, это память GPU. Но это не обязательно означает, что у вас заканчивается этот ресурс в целом. Это может означать, что диспетчер окон рабочего стола обнаружил, что вы работаете настолько низко, что одну особенность этой службы можно отключить, чтобы освободить больше памяти.
Чтобы проверить это, я начал открывать приложения, интенсивно использующие память GPU:
Это несколько выше среднего использования в моей трехэкранной настройке с несколькими ключевыми игроками (Visual Studio 2012 (аппаратное ускорение включено), PhpStorm, Aptana Studio, Chrome, Firefox, IE, ...).
Так что, да, если у вас есть только карта на 1 ГБ, и это будет ваш обычный сценарий использования, у вас уже будет проблема.
Мне пришлось продвинуться немного дальше и запустить еще пару экземпляров Visual Studio ...
... пока он не приблизился к отметке 1,5 ГБ и ...
ЩЕЛЧОК! Это заставило Windows полностью уничтожить компоновку рабочего стола (и освободить некоторые драгоценные ресурсы).
Теперь, когда я уже на критическом уровне и запускаю приложение, которое использует чрезмерное количество памяти GPU в полноэкранном режиме, я даже могу выйти за пределы этого критического предела. Вот результат после запуска Black Mesa некоторое время на 2560x1440 с максимальными деталями:
Таким образом, две вещи могут быть вычтены из этого. При превышении отметки 75% на рабочем столе Windows может принудительно отключить композицию рабочего стола, при достижении того же предела в полноэкранном приложении (и, возможно, при выходе из этого приложения) композиция рабочего стола не отключается.
Во-вторых, пока вы находитесь в своей игре, вы можете понять: «Эй, у меня достаточно ресурсов для запуска этой игры, почему у меня недостаточно ресурсов для рабочего стола?». Причина в том, что оба требуют памяти одновременно.
Windows может рассказать вам о ситуации с памятью только после выхода из игры. Итак, когда я запускаю другую Visual Studio после выхода из Black Mesa ...
Итак, что мы можем сделать по этому поводу?
Получите больше памяти GPU
Сладко и просто.
Отключить композицию рабочего стола (для процесса)
Как уже было предложено, вы можете отключить композицию рабочего стола для одного исполняемого файла. Это приводит к тому, что композиция рабочего стола временно отключается во время выполнения исполняемого файла. Это резко сократило общее потребление памяти при выполнении приложения в моих тестах:
В уведомлении о вознаграждении упоминается, что это нежелательно, так как это потенциально много работы.
Отключить композицию рабочего стола (глобально)
Я бы не стал считать это решением, так как настольные композиции обычно желательны. Но это где его отключить:
Я просто хочу избавиться от надоедливого сообщения!
Только потому, что вы удалите предупреждение « Ваша батарея почти разряжена!Вы можете говорить только еще 10 минут!«не означает, что вы можете говорить дольше 10 минут. На самом деле ваш телефон, скорее всего, просто отключится и все. Теперь, как это для улучшения?
Я никогда не предполагал, что сообщение можно отключить, и я не понимаю, как это можно считать преимуществом.
Вы можете подумать, что знаете лучше, но не знаете. Если система говорит вам, что у нее заканчиваются ресурсы, это так.
Но это не так! Я знаю!
Хорошо, давайте предположим, что Windows просто недостаточно умна, чтобы обнаружить особую ситуацию, в которой вы находитесь, а предупреждающее сообщение - просто досадное неудобство. Что теперь?
Дело в том, что меня лично это тоже касается, и это чертовски раздражает меня. Потому что я даже не получаю это предупреждение. Windows просто переключает мой цветовой профиль и все. И мне это нравится на самом деле.
Когда это происходит, я обычно быстро запускаю скрипт, который вызывает
net stop uxsms & net start uxsms
Вот полный сценарий. Он откроет приглашение UAC и перезапустит службу, чтобы ее можно было запустить из любого места. Я прикрепил его к меню «Пуск».
@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
Это перезапускает диспетчер окон рабочего стола и возвращает меня к моему составному рабочему столу (и это освобождает много ресурсов в процессе, да).
Зная это, вы также можете создать себе специальную игровую среду, в которой вы останавливаете службу, прежде чем начинать игру, чтобы бороться со всем этим поведением. Однако это приведет к тому же поведению, что и отключение композиции рабочего стола для одного исполняемого файла через свойства файла.