Saya terus-menerus dalam situasi yang sama meskipun saya tidak pernah mendapatkan pesan yang sama persis, dan telah melakukan sedikit pengujian.
Menurut pemahaman saya, sumber daya inti yang sedang tertekan di sini, adalah memori GPU . Tetapi ini tidak selalu menunjukkan bahwa Anda kehabisan sumber daya ini secara umum. Ini mungkin berarti Desktop Window Manager telah mendeteksi bahwa Anda menjalankan sangat rendah sehingga satu fitur spesifik dari layanan ini dapat dinonaktifkan untuk membebaskan lebih banyak memori.
Untuk mengujinya, saya mulai membuka aplikasi intensif memori GPU:
Ini agak di atas rata-rata digunakan pada pengaturan tiga layar saya dengan beberapa pemain kunci berjalan (Visual Studio 2012 (akselerasi perangkat keras diaktifkan), PhpStorm, Aptana Studio, Chrome, Firefox, IE, ...). Jadi, ya, jika Anda hanya memiliki kartu 1 GB dan ini akan menjadi skenario penggunaan Anda yang biasa, Anda sudah memiliki masalah.
Saya harus mendorong sedikit lebih jauh dan memulai beberapa contoh Visual Studio lagi ...
... sampai mendekati tanda 1,5 GB dan ...
JEPRET! Hal ini menyebabkan Windows mematikan komposisian desktop sepenuhnya (dan membebaskan beberapa sumber daya berharga).
Sekarang, ketika saya sudah berada pada level kritis, dan saya memulai aplikasi yang menggunakan memori GPU dalam jumlah besar di layar penuh , saya bahkan bisa melampaui batas kritis ini. Inilah hasilnya setelah menjalankan Black Mesa untuk sementara waktu pada 2560x1440 dengan perincian maksimal:
Jadi, dua hal dapat dikurangkan dari ini. Meskipun melampaui tanda 75% pada desktop dapat memaksa Windows untuk menonaktifkan komposisi desktop, ketika mencapai batas yang sama dalam aplikasi layar penuh (dan, secara opsional keluar dari aplikasi itu) komposisi desktop tidak dinonaktifkan.
Hal kedua adalah, saat Anda berada dalam gim Anda, Anda bisa mendapatkan ide "Hei, saya punya cukup sumber daya untuk menjalankan gim ini, mengapa saya tidak punya cukup sumber daya untuk desktop?". Alasannya, keduanya membutuhkan memori secara bersamaan.
Windows mungkin hanya bisa memberi tahu Anda tentang situasi memori setelah Anda keluar dari permainan. Jadi, ketika saya memulai Visual Studio lain setelah keluar dari Black Mesa ...
Jadi, apa yang bisa kita lakukan tentang ini?
Dapatkan lebih banyak memori GPU
Manis dan sederhana
Nonaktifkan Komposisi Desktop (per proses)
Seperti yang sudah disarankan, Anda dapat menonaktifkan komposisi desktop untuk satu yang dapat dieksekusi. Ini memiliki efek bahwa komposisi desktop dinonaktifkan sementara saat eksekusi dieksekusi. Ini secara drastis mengurangi konsumsi memori keseluruhan saat aplikasi dijalankan dalam pengujian saya:
Pemberitahuan karunia menyebutkan bahwa ini tidak diinginkan, karena ini berpotensi banyak pekerjaan.
Nonaktifkan Komposisi Desktop (secara global)
Saya tidak akan menganggap ini solusi karena komposisi desktop biasanya diinginkan. Tapi ini tempat untuk menonaktifkannya:
Saya hanya ingin menyingkirkan pesan yang menjengkelkan!
Hanya karena Anda menghapus peringatan " Baterai Anda hampir kosong! Anda hanya dapat berbicara selama 10 menit lagi! " Tidak berarti Anda dapat berbicara selama lebih dari 10 menit. Bahkan, ponsel Anda kemungkinan besar akan mati dan hanya itu. Sekarang bagaimana itu untuk perbaikan?
Saya tidak pernah berasumsi pesan itu bisa dimatikan dan saya tidak melihat bagaimana itu bisa dianggap sebagai manfaat.
Anda mungkin berpikir Anda tahu lebih baik, tetapi Anda tidak tahu. Jika sistem memberi tahu Anda bahwa ia kehabisan sumber daya, itu benar.
Tapi ternyata tidak! Aku tahu!
Oke, mari kita asumsikan Windows tidak cukup pintar untuk mendeteksi situasi khusus Anda dan pesan peringatan hanyalah ketidaknyamanan yang menjengkelkan. Apa sekarang?
Masalahnya, saya pribadi, saya juga terpengaruh oleh ini dan itu mengganggu saya. Karena saya bahkan tidak mendapatkan pesan peringatan itu. Windows hanya mengganti profil warna saya dan hanya itu. Dan saya benar-benar menyukainya.
Ketika itu terjadi, saya biasanya dengan cepat menjalankan skrip yang memanggil
net stop uxsms & net start uxsms
Ini skrip lengkapnya. Ini akan membuka prompt UAC dan me-restart layanan sehingga dapat dipicu dari mana saja. Saya memilikinya disematkan ke menu mulai.
@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
Ini me-restart Desktop Window Manager dan membawa saya kembali ke desktop gabungan saya (dan itu membebaskan banyak sumber daya dalam proses, ya).
Mengetahui hal ini, Anda juga dapat membangun sendiri lingkungan permainan khusus tempat Anda menghentikan layanan sebelum memulai permainan untuk memerangi seluruh perilaku ini. Namun, ini akan menyebabkan perilaku yang identik untuk menonaktifkan komposisi desktop untuk satu yang dapat dieksekusi melalui properti file.