Estou constantemente em uma situação semelhante, embora nunca receba exatamente a mesma mensagem e tenha feito alguns testes.
Para meu entendimento, o principal recurso que está sob estresse aqui é a memória da GPU . Mas isso não indica necessariamente que você está ficando sem esse recurso em geral. Pode significar apenas que o Desktop Window Manager detectou que você está executando tão baixo que um recurso específico deste serviço pode ser desativado para liberar mais memória.
Para testar isso, comecei a abrir aplicativos que consomem muita memória da GPU:
Isso é um pouco acima da média na minha configuração de tela tripla com alguns players importantes em execução (Visual Studio 2012 (aceleração de hardware ativada), PhpStorm, Aptana Studio, Chrome, Firefox, IE, ...). Então, sim, se você tiver apenas um cartão de 1 GB e esse for o seu cenário de uso normal, você já terá um problema.
Eu tive que ir um pouco mais longe e iniciar mais algumas instâncias do Visual Studio ...
... até chegar à marca de 1,5 GB e ...
SNAP! Isso fez com que o Windows eliminasse completamente a composição da área de trabalho (e liberasse alguns recursos preciosos).
Agora, quando já estou em um nível crítico e inicio um aplicativo que utiliza quantidades excessivas de memória da GPU em tela cheia , posso ir além desse limite crítico. Aqui está o resultado depois de executar o Black Mesa por um tempo em 2560x1440 com o máximo de detalhes:
Portanto, duas coisas podem ser deduzidas disso. Se ultrapassar a marca de 75% na área de trabalho, pode forçar o Windows a desativar a composição da área de trabalho, ao atingir o mesmo limite em um aplicativo de tela cheia (e, opcionalmente, saindo desse aplicativo), a composição da área de trabalho não está desabilitada.
A segunda coisa é que, enquanto você está no seu jogo, você pode ter a idéia "Ei, tenho recursos suficientes para executar este jogo, por que não tenho recursos suficientes para a área de trabalho?". O motivo é que ambos requerem memória ao mesmo tempo.
O Windows pode apenas informar sobre a situação da memória depois que você saiu do jogo. Então, quando eu inicio outro Visual Studio depois de sair do Black Mesa ...
Então, o que nós podemos fazer sobre isso?
Obtenha mais memória GPU
Doce e simples.
Desativar composição da área de trabalho (por processo)
Como já foi sugerido, você pode desativar a composição da área de trabalho para um único executável. Isso tem o efeito de que a composição da área de trabalho é temporariamente desabilitada enquanto o executável está sendo executado. Isso reduziu drasticamente o consumo geral de memória enquanto o aplicativo é executado nos meus testes:
O aviso de recompensa menciona que isso é indesejável, pois é potencialmente muito trabalhoso.
Desativar composição da área de trabalho (globalmente)
Eu não consideraria isso uma solução, pois a composição da área de trabalho é geralmente desejada. Mas é aqui onde desabilitá-lo:
Eu só quero me livrar da mensagem irritante!
Só porque você remove o aviso " Sua bateria está quase vazia! Você só pode falar por mais 10 minutos! " Não significa que você pode falar por mais de 10 minutos. Na verdade, é provável que o seu telefone simplesmente desligue e pronto. Agora, como é isso para uma melhoria?
Nunca imaginei que a mensagem pudesse ser desativada e não vejo como isso poderia ser considerado um benefício.
Você pode pensar que sabe melhor, mas não sabe. Se o sistema está lhe dizendo que está ficando sem recursos, está.
Mas não é! Eu sei!
Ok, vamos supor que o Windows não seja inteligente o suficiente para detectar a situação especial em que você está e a mensagem de aviso é simplesmente um inconveniente irritante. E agora?
A questão é que, pessoalmente, eu também sou afetada por isso e isso me irrita demais. Porque eu nem recebo essa mensagem de aviso. O Windows simplesmente muda meu perfil de cores e é isso. E eu gosto disso, na verdade.
Quando isso acontece, geralmente executo rapidamente um script que chama
net stop uxsms & net start uxsms
Aqui está o script completo. Ele abrirá um prompt do UAC e reiniciará o serviço para que possa ser acionado de qualquer lugar. Eu o tenho fixado no menu Iniciar.
@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
Isso reinicia o Desktop Window Manager e me traz de volta à minha área de trabalho composta (e libera muitos recursos no processo, sim).
Sabendo disso, você também pode construir um ambiente de jogo especial em que interrompe o serviço antes de iniciar o jogo para combater todo esse comportamento. No entanto, isso causará um comportamento idêntico ao desativar a composição da área de trabalho para um único executável por meio das propriedades do arquivo.