ฉันอยู่ในสถานการณ์ที่คล้ายกันอย่างต่อเนื่องแม้ว่าฉันจะไม่เคยได้รับข้อความเดิมที่แน่นอนและทำการทดสอบเล็กน้อย
ความเข้าใจของทรัพยากรหลักที่อยู่ภายใต้ความเครียดที่นี่เป็นหน่วยความจำ GPU แต่นี่ไม่ได้หมายความว่าคุณหมดทรัพยากรโดยทั่วไปแล้ว อาจหมายถึง Desktop Window Manager ตรวจพบว่าคุณกำลังทำงานน้อยจนคุณสมบัติเฉพาะของบริการนี้สามารถปิดใช้งานเพื่อเพิ่มหน่วยความจำได้มากขึ้น
เพื่อทดสอบสิ่งนี้ฉันเริ่มเปิดแอพพลิเคชั่นที่ใช้หน่วยความจำ GPU อย่างเข้มข้น:
นี่เป็นการใช้งานโดยเฉลี่ยในการตั้งค่าสามหน้าจอของฉันโดยมีผู้เล่นสำคัญสองสามคนกำลังเรียกใช้ (Visual Studio 2012 (เปิดใช้งานการเร่งความเร็วด้วยฮาร์ดแวร์), PhpStorm, Aptana Studio, Chrome, Firefox, IE, ... ดังนั้นถ้าคุณมีการ์ดขนาด 1 GB และนี่เป็นสถานการณ์การใช้งานปกติของคุณคุณก็มีปัญหาอยู่แล้ว
ฉันต้องผลักดันต่อไปอีกเล็กน้อยและเริ่มอินสแตนซ์ Visual Studio สองสามรายการ ...
... จนกว่าจะถึงเครื่องหมาย 1.5 GB และ ...
SNAP! สิ่งนี้ทำให้ Windows ฆ่าคอมโพสิตเดสก์ท็อปอย่างสมบูรณ์ (และเพิ่มทรัพยากรอันมีค่าบางส่วน)
ตอนนี้เมื่อฉันอยู่ในระดับวิกฤติแล้วและฉันเริ่มต้นแอปพลิเคชันที่ใช้หน่วยความจำ GPU มากเกินไปในแบบเต็มหน้าจอฉันสามารถทำได้เกินขีด จำกัด วิกฤตินี้ นี่คือผลลัพธ์หลังจากใช้งาน Black Mesa ไปสักพักบน 2560x1440 ที่รายละเอียดสูงสุด:
ดังนั้นสามารถหักได้สองสิ่ง ในขณะที่ใช้งานเกินเครื่องหมาย 75% บนเดสก์ท็อปสามารถบังคับให้ Windows ปิดใช้งานการจัดองค์ประกอบของเดสก์ท็อปเมื่อถึงขีด จำกัด เดียวกันในแอปพลิเคชันแบบเต็มหน้าจอ
สิ่งที่สองคือในขณะที่คุณอยู่ในเกมของคุณคุณสามารถรับแนวคิด "เฮ้ฉันมีทรัพยากรเพียงพอที่จะรันเกมนี้ทำไมฉันไม่มีทรัพยากรเพียงพอสำหรับเดสก์ท็อป" เหตุผลก็คือทั้งสองต้องการหน่วยความจำในเวลาเดียวกัน
Windows อาจสามารถบอกคุณเกี่ยวกับสถานการณ์หน่วยความจำหลังจากที่คุณออกจากเกม ดังนั้นเมื่อฉันเริ่ม Visual Studio อื่นหลังจากออกจาก Black Mesa ...
ดังนั้นเราจะทำอย่างไรกับเรื่องนี้
รับหน่วยความจำ 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
สิ่งนี้จะรีสตาร์ท Desktop Window Manager และนำฉันกลับไปที่เดสก์ท็อปที่มีการคอมโพสิต (และทำให้มีทรัพยากรมากมายในกระบวนการใช่)
เมื่อรู้สิ่งนี้คุณสามารถสร้างสภาพแวดล้อมการเล่นเกมพิเศษที่คุณหยุดให้บริการก่อนที่จะเริ่มเกมเพื่อต่อสู้กับพฤติกรรมทั้งหมดนี้ อย่างไรก็ตามสิ่งนี้จะทำให้เกิดพฤติกรรมที่เหมือนกันในการปิดการใช้งานองค์ประกอบเดสก์ท็อปสำหรับการปฏิบัติการเพียงครั้งเดียวผ่านคุณสมบัติไฟล์