ฉันเขียนแอปพลิเคชั่น. NET 4.5 ที่บัฟเฟอร์สีข้อมูลอินฟราเรดและข้อมูลเชิงลึกจาก Kinect v2 ทำการประมวลผลบางอย่างแล้วประมวลผลลงในดิสก์ในรูปแบบที่ไม่มีการบีบอัด แอ็พพลิเคชัน. NET ยังเริ่ม ffmpeg ในฐานะ subprocess และไพพ์ข้อมูลสีเพื่อให้เข้ารหัสเป็น H.264
เนื่องจากฉันไม่ได้ใช้ SSD ข้อมูลวิดีโอจึงมาถึงเร็วกว่าที่ฉันสามารถเขียนลงดิสก์ได้ แต่ก็โอเคมันเป็นที่ยอมรับสำหรับฉันที่จะทิ้งเฟรมวิดีโอเมื่อฉันเหลือแรมน้อย สิ่งที่ฉันต้องการเพียงอย่างเดียวคือสิ่งที่ฉันทำต่อเนื่องเป็นส่วนใหญ่ต่อเนื่อง 8-10 วินาทีวิดีโอ ดังนั้นฉันจึงได้เพิ่มตรรกะบางอย่างในแอปพลิเคชั่น. NET 4.5 ของฉันเพื่อเริ่มทิ้งเฟรมวิดีโอเมื่อฉันไม่มี RAM เพียงพอที่จะบัฟเฟอร์บัฟเฟอร์ต่อเนื่องวิดีโอ 8 ถึง 10 วินาที (ประมาณ 1.5 ถึง 2 GB)
และเพื่อป้องกันการฟาดหน้าฉันจึงปิดการใช้งานไฟล์เพจจิ้งอย่างสมบูรณ์ ทำให้ฉันมี RAM จริงทั้งหมด 16 GB
ปัญหาของฉันคือแม้จะมีกลไกนั้นอยู่แล้วบางครั้งแอปพลิเคชัน. NET ของฉันหรือกระบวนการย่อย ffmpeg ยังคงถูกฆ่าเมื่อ Windows 8.1 ประหลาดใจเกี่ยวกับ RAM ต่ำเพราะเห็นได้ชัดว่าแอปพลิเคชันของฉันใช้ RAM ส่วนใหญ่ เพื่อเขียนลงดิสก์ มีวิธีบอก Windows หรือไม่ว่ากระบวนการของฉันสำคัญกว่ากระบวนการอื่น ๆ เพื่อที่ Windows จะเริ่มฆ่ากระบวนการที่สำคัญน้อยกว่าก่อน
CreateMemoryResourceNotification
ว่าการแฮ็กน้อยกว่ามาก