Sono costantemente in una situazione simile anche se non ho mai ricevuto lo stesso identico messaggio e ho fatto un po 'di test in giro.
A mio avviso, la risorsa principale che è sotto stress qui, è la memoria GPU . Ma ciò non indica necessariamente che stai esaurendo questa risorsa in generale. Potrebbe significare solo che Desktop Window Manager ha rilevato che stai funzionando così in basso che una funzionalità specifica di questo servizio potrebbe essere disabilitata per liberare più memoria.
Per provare questo, ho iniziato ad aprire applicazioni ad alta intensità di memoria GPU:
Questo è un uso leggermente superiore alla mia configurazione a triplo schermo con alcuni giocatori chiave in esecuzione (Visual Studio 2012 (accelerazione hardware abilitata), PhpStorm, Aptana Studio, Chrome, Firefox, IE, ...). Quindi, sì, se hai solo una scheda da 1 GB e questo sarebbe il tuo solito scenario di utilizzo, avresti già un problema.
Ho dovuto spingere un po 'più in là e avviare un altro paio di istanze di Visual Studio ...
... fino a quando non si avvicinava al segno da 1,5 GB e ...
SNAP! Ciò ha causato l'uccisione completa della composizione desktop di Windows (liberando alcune preziose risorse).
Ora, quando sono già a un livello critico e avvio un'applicazione che utilizza quantità eccessive di memoria GPU a schermo intero , posso persino andare oltre questo limite critico. Ecco il risultato dopo aver eseguito Black Mesa per un po 'su 2560x1440 al massimo dettaglio:
Quindi, due cose possono essere dedotte da questo. Se si supera il limite del 75% sul desktop, è possibile che Windows disabiliti la composizione desktop, quando si raggiunge lo stesso limite in un'applicazione a schermo intero (e, facoltativamente, si esce da tale applicazione) la composizione desktop non viene disabilitata.
La seconda cosa è, mentre sei nel tuo gioco, puoi avere l'idea "Ehi, ho abbastanza risorse per eseguire questo gioco, perché non ho abbastanza risorse per il desktop?". Il motivo è che entrambi richiedono memoria contemporaneamente.
Windows potrebbe essere in grado di raccontarti la situazione della memoria solo dopo essere uscito dal gioco. Quindi, quando avvio un altro Visual Studio dopo essere uscito da Black Mesa ...
Quindi, cosa possiamo fare al riguardo?
Ottieni più memoria GPU
Dolce e semplice.
Disabilita composizione desktop (per processo)
Come già suggerito, è possibile disabilitare la composizione desktop per un singolo eseguibile. Ciò ha l'effetto che la composizione del desktop è temporaneamente disabilitata durante l'esecuzione dell'eseguibile. Ciò ha drasticamente ridotto il consumo complessivo di memoria mentre l'applicazione viene eseguita nei miei test:
L'avviso di grazia menziona che ciò è indesiderabile, poiché si tratta potenzialmente di molto lavoro.
Disabilita composizione desktop (a livello globale)
Non la considero una soluzione in quanto la composizione desktop è solitamente desiderata. Ma questo è dove disabilitarlo:
Voglio solo liberarmi del fastidioso messaggio!
Solo perché rimuovi l'avviso "La batteria è quasi scarica! Puoi parlare solo per altri 10 minuti! " Non significa che puoi parlare per più di 10 minuti. In effetti, molto probabilmente il tuo telefono si spegnerà e basta. Come va per un miglioramento?
Non ho mai pensato che il messaggio potesse essere disattivato e non vedo come possa essere considerato un vantaggio.
Potresti pensare di conoscerlo meglio, ma non lo sai. Se il sistema ti sta dicendo che sta esaurendo le risorse, lo è.
Ma non lo è! Lo so!
Ok, supponiamo che Windows non sia abbastanza intelligente da rilevare la situazione speciale in cui ti trovi e il messaggio di avviso è semplicemente un fastidioso inconveniente. E adesso?
Il fatto è che io personalmente ne sono influenzato e questo mi dà fastidio. Perché non ricevo nemmeno quel messaggio di avviso. Windows cambia semplicemente il mio profilo colore e il gioco è fatto. E in realtà mi piace.
Quando succede di solito eseguo rapidamente uno script che chiama
net stop uxsms & net start uxsms
Ecco la sceneggiatura completa. Si aprirà un prompt UAC e riavvierà il servizio in modo che possa essere attivato da qualsiasi luogo. L'ho bloccato sul menu di avvio.
@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
Questo riavvia Desktop Window Manager e mi riporta al mio desktop composto (e libera molte risorse nel processo, yay).
Sapendo questo, puoi anche costruirti un ambiente di gioco speciale in cui interrompi il servizio prima di iniziare il gioco per combattere l'intero comportamento. Tuttavia, ciò comporterà un comportamento identico alla disabilitazione della composizione desktop per un singolo eseguibile tramite le proprietà del file.