まったく同じメッセージを受け取ったことがなくても、私は常に同じような状況にあり、テストを少し行ってきました。
私の理解では、ここでストレスを受けているコアリソースはGPUメモリです。しかし、これは必ずしも一般的にこのリソースが不足していることを示しているわけではありません。これは、デスクトップウィンドウマネージャーが、ユーザーの実行が非常に少ないことを検出したため、このサービスの特定の機能を無効にしてメモリを解放できることを意味する場合があります。
これをテストするために、GPUメモリを集中的に使用するアプリケーションを開き始めました。
これは、いくつかのキープレーヤーが実行されている(Visual Studio 2012(ハードウェアアクセラレーションが有効)、PhpStorm、Aptana Studio、Chrome、Firefox、IEなど)のトリプルスクリーンセットアップでの平均使用をやや上回っています。そのため、1 GBのカードしかなく、これが通常の使用シナリオである場合は、すでに問題があります。
さらにプッシュして、さらに2つ以上のVisual Studioインスタンスを起動する必要がありました...
... 1.5 GBのマークに近づくまで...
スナップ!これにより、Windowsはデスクトップの合成を完全に終了させました(そして、いくつかの貴重なリソースを解放しました)。
今、私はすでにクリティカルレベルにあり、フルスクリーンで過剰な量のGPUメモリを使用するアプリケーションを起動すると、このクリティカルな制限を超えることさえできます。以下は、最大詳細で2560x1440でしばらくBlack Mesaを実行した後の結果です。
したがって、これから2つのことを差し引くことができます。デスクトップ上の75%のマークを超えると、Windowsは強制的にデスクトップコンポジションを無効にすることができますが、フルスクリーンアプリケーションで同じ制限に達すると(オプションでそのアプリケーションを終了すると)、デスクトップコンポジションは無効になりません。
2つ目は、ゲームをしているときに、「このゲームを実行するのに十分なリソースがあります。デスクトップに十分なリソースがないのはなぜですか?」というアイデアを得ることができるということです。その理由は、両方が同時にメモリを必要とするからです。
Windowsは、ゲームを終了した後にのみメモリ状況について通知できる場合があります。だから、私は別の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
これにより、デスクトップウィンドウマネージャーが再起動し、合成デスクトップに戻ります(そして、プロセス中の多くのリソースが解放されます)。
これを知って、あなたはこの行動全体と戦うためにゲームを始める前にサービスを止める特別なゲーム環境を構築することもできます。ただし、これにより、ファイルプロパティを介して単一の実行可能ファイルのデスクトップコンポジションを無効にするのと同じ動作が発生します。