Ik zit constant in een vergelijkbare situatie, ook al krijg ik nooit precies dezelfde boodschap, en heb ik een beetje getest.
Voor zover ik weet, is de kernbron die hier onder druk staat, het GPU geheugen. Maar dit geeft niet noodzakelijkerwijs aan dat je deze bron in het algemeen opraakt. Het kan gewoon betekenen dat de Desktop Window Manager heeft gedetecteerd dat je zo laag draait dat een specifieke functie van deze dienst uitgeschakeld zou kunnen worden om meer geheugen vrij te maken.
Om dit te testen ben ik begonnen met het openen van GPU geheugen intensieve toepassingen:
Dit is iets bovengemiddeld gebruik op mijn triple-screen setup met enkele key players die draaien (Visual Studio 2012 (hardwareversnelling ingeschakeld), PhpStorm, Aptana Studio, Chrome, Firefox, IE, …). Dus, ja, als je maar een 1 GB kaart hebt en dit zou je gebruikelijke gebruiksscenario zijn, zou je al een probleem hebben.
Ik moest een beetje verder duwen en nog een paar Visual Studio instances starten…
…totdat het de 1.5 GB markering naderde en…
SNAP! Dit zorgde ervoor dat Windows het samenstellen van bureaubladcomposities volledig uit de weg ging (en een aantal kostbare bronnen vrijmaakte). Nu, als ik al op een kritisch niveau ben, en ik een applicatie start die overmatige hoeveelheden GPU geheugen ** in volledig scherm gebruikt** , kan ik zelfs verder gaan dan deze kritische limiet. Hier is het resultaat na het draaien van Black Mesa voor een tijdje op 2560x1440 bij maximale details:
Dus, twee dingen kunnen hiervan worden afgetrokken. Als je over de 75% markering op het bureaublad gaat, kan je Windows dwingen om de bureaubladcompositie uit te schakelen, als je dezelfde limiet bereikt in een schermvullende applicatie (en, optioneel, die applicatie verlaat) wordt de bureaubladcompositie niet uitgeschakeld.
Het tweede ding is, als je in je spel zit, kun je het idee krijgen “Hé, ik heb genoeg middelen om dit spel te draaien, waarom heb ik niet genoeg middelen voor het bureaublad?”. De reden is, dat beiden tegelijkertijd geheugen nodig hebben.
Windows kan je misschien pas vertellen over de geheugensituatie nadat je het spel hebt verlaten. Dus, als ik een andere Visual Studio start na het verlaten van Black Mesa…
Wat kunnen we hieraan doen?
Krijg meer GPU geheugen
Zoet en eenvoudig.
Desktop Compositie uitschakelen (per proces)
Zoals al werd gesuggereerd, kun je de desktopcompositie uitschakelen voor een enkel uitvoerbaar bestand. Dit heeft als effect dat de bureaubladcompositie tijdelijk wordt uitgeschakeld terwijl het uitvoerbare bestand wordt uitgevoerd. Dit heeft het totale geheugengebruik drastisch verminderd terwijl de applicatie wordt uitgevoerd in mijn testen:
De bounty notice vermeldt dat dit ongewenst is, omdat dit potentieel veel werk is.
Desktop Compositie uitschakelen (wereldwijd)
Ik zou dit niet als een oplossing beschouwen omdat desktopcompositie meestal gewenst is. Maar dit is waar je het moet uitschakelen:
Ik wil gewoon de vervelende boodschap kwijt!
Alleen maar omdat je de waarschuwing verwijdert “ *Je batterij is bijna leeg! Je kunt alleen nog maar 10 minuten praten *” betekent niet dat je langer dan 10 minuten kunt praten. In feite zal uw telefoon waarschijnlijk gewoon worden uitgeschakeld en dat is het. Hoe is dat nu voor een verbetering?
Ik heb nooit aangenomen dat het bericht kan worden uitgeschakeld en ik zie niet in hoe dat als een voordeel kan worden beschouwd.
Je denkt misschien dat je het beter weet, maar dat weet je niet. Als het systeem je vertelt dat de middelen opraken, dan is dat zo.
Maar dat is het niet! Ik weet het!
Ok, laten we aannemen dat Windows gewoon niet slim genoeg is om de speciale situatie waarin je je bevindt te detecteren en de waarschuwingsboodschap is gewoon een vervelend ongemak. Wat nu?
Het ding is, ik persoonlijk, ik heb hier ook last van en het is verdomd vervelend. Omdat ik die waarschuwingsboodschap niet eens krijg. Windows schakelt gewoon mijn kleurprofiel om en dat is het. En dat vind ik eigenlijk wel leuk.
Als het gebeurt, voer ik meestal snel een script uit dat
net stop uxsms & net start uxsms
noemt. Het zal een UAC prompt openen en de service herstarten zodat deze overal kan worden getriggerd. Ik heb het vastgepind op het startmenu.
@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
Dit herstart de Desktop Window Manager en brengt me terug naar mijn samengestelde desktop (en het maakt veel bronnen vrij in het proces, yay).
Dit wetende, kun je ook zelf een speciale spelomgeving bouwen waar je de service stopt voordat je het spel start om dit hele gedrag tegen te gaan. Echter, dit zal leiden tot identiek gedrag bij het uitschakelen van de bureaubladcompositie voor een enkel uitvoerbaar bestand via de bestandseigenschappen.