私の理解では、ここでストレスを受けているコアリソースはGPUメモリです。しかし、これは必ずしもこのリソースが不足しているということを示しているわけではありません。このサービスの特定の機能を無効にして、より多くのメモリを解放することができます。
このテストのために、私は GPU メモリ集約型アプリケーションを開き始めました。1GB のカードしか持っておらず、これが通常の使用シナリオであれば、すでに問題が発生しているでしょう。これにより、Windowsはデスクトップ合成を完全に終了させてしまいました(そして貴重なリソースを解放してしまいました)。ここに最高の細部の 2560x1440 でしばらくの間 Black Mesa を動かした後結果はあります:
そう、2 つの事はこれから控除することができます。デスクトップの 75% マークを超えた場合、Windows はデスクトップ合成を無効にすることができますが、フルスクリーンのアプリケーションで同じ制限に達した場合 (および、オプションでそのアプリケーションを終了した場合)、デスクトップ合成は無効になりません。理由は、どちらも同時にメモリを必要とするからです。
Windowsは、ゲームを終了した後にしかメモリの状況を教えてくれないかもしれません。なので、Black Mesaを終了した後に別のVisual Studio afterを起動すると…
では、どうすればいいのかというと、
Get more GPU memory
甘くシンプルに。
Disable Desktop Composition (per process)
すでに提案されているように、1つの実行ファイルに対してデスクトップコンポジションを無効にすることができます。これは、実行ファイルを実行している間、一時的にデスクトップ合成を無効にするという効果があります。
バウンティ通知によると、これは多くの作業が必要になる可能性があるため、望ましくないとされています。
Disable Desktop Composition (global)
デスクトップコンポジションは通常望まれているので、これは解決策とは考えていません。しかし、これはそれを無効にするための場所です:
迷惑なメッセージを取り除きたいだけです!
警告を取り除くだけで “ **あなたのバッテリーはほぼ空っぽです! あと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 が再起動され、合成デスクトップに戻されます。しかし、これはファイルのプロパティを使って単一の実行ファイルのデスクトップ構成を無効にするのと同じ動作をします。