Aynı mesajı almasam da sürekli aynı durumdayım ve biraz test yaptım.
Anladığım kadarıyla, burada stres altında olan temel kaynak GPU hafızası . Ancak bu, genel olarak bu kaynağın tükendiğini göstermez. Bu, Desktop Window Manager'ın o kadar düşük çalıştığınızı algıladığı anlamına gelebilir, bu hizmetin belirli bir özelliğinin daha fazla bellek boşaltması için devre dışı bırakılabileceği anlamına gelebilir.
Bunu test etmek için, GPU belleği yoğun uygulamaları açmaya başladım:
Üçlü ekran kurulumumda çalışan birkaç önemli oyuncu (Visual Studio 2012 (donanım hızlandırması etkin), PhpStorm, Aptana Studio, Chrome, Firefox, IE, ...) ile ortalamanın üzerinde bir kullanım. Yani, evet, sadece 1 GB kartınız varsa ve bu normal kullanım senaryonuzsa, zaten bir probleminiz olurdu.
Biraz daha zorlamak ve birkaç tane daha Visual Studio örneği başlatmak zorunda kaldım ...
... 1.5 GB'a yaklaşıncaya kadar ...
SNAP! Bu, Windows'un masaüstünü birleştirmeyi tamamen ortadan kaldırmasına neden oldu (ve bazı değerli kaynakları serbest bıraktı).
Şimdi, zaten kritik bir seviyedeyken ve tam ekranda aşırı miktarda GPU belleği kullanan bir uygulamayı başlattığımda , bu kritik sınırın bile ötesine geçebiliyorum. İşte Black Mesa’yı bir süre 2560x1440’da azami ayrıntıyla çalıştırdıktan sonraki sonuç:
Böylece bundan iki şey çıkarılabilir. Masaüstündeki% 75'lik işaretin üzerine çıkarken, Windows'u tam ekran bir uygulamada (ve isteğe bağlı olarak bu uygulamadan çıkarken) aynı sınıra ulaştığında masaüstü kompozisyonunu devre dışı bırakmaya zorlayabilir.
İkincisi, oyununuzdayken, "Hey, bu oyunu çalıştırmak için yeterli kaynağım var, neden masaüstü için yeterli kaynağım yok?" Fikrini elde edebilirsiniz. Sebebi, her ikisi de aynı anda bellek gerektirir.
Windows, yalnızca oyundan çıktıktan sonra size hafıza durumunu anlatabilir. Yani, Black Mesa'dan çıktıktan sonra başka bir Visual Studio'ya başladığımda ...
Peki bu konuda ne yapabiliriz?
Daha fazla GPU belleği edinin
Tatlı ve basit.
Masaüstü Kompozisyonunu Devre Dışı Bırak (işlem başına)
Daha önce önerildiği gibi, tek bir yürütülebilir dosya için masaüstü kompozisyonunu devre dışı bırakabilirsiniz. Bu, yürütülebilir dosya yürütülürken masaüstü kompozisyonunun geçici olarak devre dışı bırakılmasına neden olur. Bu, uygulama testlerimde yürütülürken genel bellek tüketimini büyük ölçüde azalttı:
Ödül bildirimi, bunun potansiyel olarak çok fazla iş olduğu için istenmeyen bir durum olduğunu belirtiyor.
Masaüstü Kompozisyonunu Devre Dışı Bırak (genel olarak)
Masaüstü kompozisyonu genellikle istendiği için bunu bir çözüm olarak düşünmem. Ama bu onu etkisiz hale getirecek yer:
Sadece can sıkıcı mesajdan kurtulmak istiyorum!
Sırf " Piliniz neredeyse boş! Sadece 10 dakika daha konuşabilirsiniz! " Uyarısını kaldırdığınız için , 10 dakikadan daha uzun konuşabileceğiniz anlamına gelmez. Aslında, telefonunuz büyük olasılıkla kapanacak ve hepsi bu kadar. Şimdi bu bir gelişme için nasıl?
Mesajın kapatılabileceğini asla varsaymadım ve bunun nasıl bir avantaj olarak görülebileceğini anlamadım.
Daha iyisini bildiğini düşünebilirsin, ama bilmiyorsun. Sistem size kaynakların tükenmekte olduğunu söylüyorsa, öyledir.
Ama öyle değil! Biliyorum!
Tamam, Windows'un içinde bulunduğunuz özel durumu algılayacak kadar akıllı olmadığını ve uyarı mesajının sadece can sıkıcı bir rahatsızlık olduğunu varsayalım. Şimdi ne var?
Mesele şu ki, şahsen ben de bundan etkileniyorum ve bu beni rahatsız ediyor. Çünkü o uyarı mesajını bile anlamadım. Windows sadece renk profilimi değiştiriyor ve hepsi bu. Ve bunu gerçekten seviyorum.
Olduğunda genellikle hızlı bir şekilde çağıran bir komut dosyasını çalıştırırım
net stop uxsms & net start uxsms
İşte tam komut dosyası. Bir UAC istemini açacak ve her yerden tetiklenebilmesi için hizmeti yeniden başlatacak. Başlat menüsüne tutturdum.
@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
Bu, Masaüstü Pencere Yöneticisini yeniden başlatır ve beni birleştirilmiş masaüstüme geri getirir (ve bu süreçte çok fazla kaynak serbest bırakır, yay).
Bunu bilerek, bu davranışla mücadele etmek için oyuna başlamadan önce hizmeti durdurduğunuzda kendinize özel bir oyun ortamı oluşturabilirsiniz. Ancak, bu aynı davranışın dosya özelliklerini tek bir yürütülebilir dosya için masaüstü kompozisyonunu devre dışı bırakmasına neden olacaktır.