我一直处于类似的情况,即使我从未收到完全相同的消息,并且进行了一些测试。
据我了解,这里压力最大的核心资源是GPU内存。但这并不一定表明您通常会用尽该资源。这可能只是意味着Desktop Window Manager已检测到您的运行速度很慢,因此可以禁用此服务的一项特定功能以释放更多的内存。
为了测试这一点,我开始打开GPU内存密集型应用程序:
这比我的三屏设置上的平均使用情况要高一些,运行着几个关键播放器(Visual Studio 2012(启用了硬件加速),PhpStorm,Aptana Studio,Chrome,Firefox,IE等)。所以,是的,如果您只有一张1 GB的卡,这将是您通常的使用情况,那么您已经遇到了问题。
我不得不进一步推动并启动更多的Visual Studio实例...
...直到它接近1.5 GB标记并...
快点!这导致Windows完全终止了桌面合成(并释放了一些宝贵的资源)。
现在,当我已经处于临界水平时,并且我启动了一个在全屏模式下使用大量GPU内存的应用程序,我什至可以超越这个临界极限。以下是在2560x1440上以最大详细信息运行Black Mesa一段时间后的结果:
因此,可以从中得出两点。超过桌面上75%的标记可能会强制Windows禁用桌面合成,但是当在全屏应用程序中达到相同限制(并且可以选择退出该应用程序)时,不会禁用桌面合成。
第二件事是,当您在玩游戏时,可以得到这样的想法:“嘿,我有足够的资源来运行此游戏,为什么我没有足够的资源用于桌面?”。原因是,两者都需要同时存储。
退出游戏后,Windows可能只能告诉您有关内存的情况。因此,当我退出Black Mesa 后启动另一个Visual Studio时...
那么,我们该怎么办?
获得更多的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
这将重新启动Desktop Window Manager,并将我带回到复合桌面(并且,在此过程中,它释放了大量资源)。
知道了这一点,您还可以为自己构建一个特殊的游戏环境,在该环境中您可以在开始游戏之前停止该服务以打击整个行为。但是,这将导致相同的行为,从而通过文件属性为单个可执行文件禁用桌面合成。