คำถามสุดท้ายของคุณ - เวอร์ชันย่อ: ข้อความแสดงข้อผิดพลาดเกี่ยวกับพื้นที่ที่อยู่เสมือนที่ "ส่งมอบแล้ว" หากคุณดูกราฟ Commit Charge ในสแนปชอตหน้าจอที่สองของคุณคุณจะเห็นว่าเป็นจริงหรือใกล้ถึงขีด จำกัด
จำนวนแรมที่ "ว่าง", "ว่าง" หรือ "กำลังใช้" ไม่สำคัญ โดยเฉพาะอย่างยิ่งการขาดแคลน RAM "ที่พร้อมใช้งาน" ไม่ใช่เหตุผลของข้อความ "หน่วยความจำเหลือน้อย" หรือ "หน่วยความจำไม่พอ"
ขีดจำกัดความรับผิดชอบเท่ากับขนาดทั้งหมดของ RAM + pagefile เมื่อจัดสรรหน่วยความจำที่กำหนดไว้จะมีการเรียกเก็บเงินทันทีเพื่อ "กระทำการเรียกเก็บเงิน" แม้ว่าจะยังไม่ได้ใช้จริง ... หมายความว่าไม่มีการใช้พื้นที่ RAM หรือ PF ทันที ฟิสิคัลสเปซ (ไม่ว่าจะเป็น RAM หรือ pagefile) จะถูกใช้เมื่ออ้างอิงหน่วยความจำเท่านั้น ต่อจากนั้นจะต้องมีที่อยู่จนกว่าโปรแกรมจะว่างหรือกระบวนการทั้งหมดสิ้นสุดลง
ตัวอย่าง: สมมติว่าคุณไม่มีไฟล์เพจดังนั้นขีด จำกัด การส่งข้อมูลของคุณคือ 16 GB (ขนาด RAM ของคุณ) ทีนี้สมมติว่า 8 โปรเซสลองเป็น VirtualAlloc (MEM_COMMIT) 1 GB ผลลัพธ์: ค่าใช้จ่ายที่เพิ่มขึ้น 8 GB ไม่มีผลกระทบต่อ RAM ในทันทีอย่างไรก็ตาม! ราวกับว่าคุณซื้อกระดาษหนึ่งแผ่นที่ร้านเครื่องเขียน แต่คุณไม่ได้รับกระดาษจริงๆ ทุกครั้งที่คุณต้องการแผ่นงานใหม่จะมีแผ่นงานปรากฏขึ้นอย่างน่าอัศจรรย์ จนกว่าคุณจะใช้ทั้งแผ่น (ขนาดของพื้นที่ที่จัดสรร)
ทีนี้สมมติว่าแต่ละกระบวนการนั้นเข้าถึง 100 MB จาก 1 GB เท่านั้น RAM ที่ใช้จะเป็นเพียง 800 MB
แต่เนื่องจากแต่ละไฟล์อาจอ้างอิงถึง 1 GB ทั้งหมดระบบปฏิบัติการจึงต้องแน่ใจว่า RAM 8 GB + พื้นที่ว่างในแฟ้มเพจไฟล์ ... ดีเพียงแค่ RAM ในกรณีที่ไม่มีไฟล์เพจเพจ ... ถูกเก็บไว้ในกรณีที่เกิดขึ้น . กลับไปที่ร้านเครื่องเขียนพวกเขาต้องเก็บกระดาษให้เพียงพอเพื่อให้ทุก ๆ แผ่นเท่าที่ซื้อมา
ดังนั้นระบบปฏิบัติการจะต้องหยุดการอนุญาตให้ VirtualAlloc (MEM_COMMIT) ประสบความสำเร็จเมื่อจำนวนเงินปัจจุบันที่ตกลงไว้นั้นถึงขีด จำกัด
ทำไม? เนื่องจากกระบวนการคาดว่าจะตรวจสอบผลลัพธ์ของ VirtualAlloc เพื่อดูว่ามันประสบความสำเร็จ เมื่อดำเนินการแล้วและพบว่าการจัดสรรสำเร็จกระบวนการมีสิทธิ์ทุกอย่างที่จะคาดหวังว่าการอ้างอิงที่ตามมาของมันไปยังภูมิภาคที่มุ่งมั่นทั้งหมดจะประสบความสำเร็จ
หาก Windows อนุญาตให้ค่าใช้จ่ายการส่งมอบเกินจำนวนพื้นที่ว่างที่มีอยู่เพื่อรับรู้พื้นที่นั้นแสดงว่าไม่สามารถทำได้ตามความคาดหวัง
วิธีแก้ไขปัญหาด่วนคือการเพิ่มขนาดเริ่มต้น (= เริ่มต้น) ของไฟล์เพจของคุณ จากคำอธิบายข้างต้นคุณควรจะเห็นว่าทำไมสิ่งนี้จึงหลีกเลี่ยงข้อความแสดงข้อผิดพลาดแม้ว่าจะไม่มีสิ่งใดถูกเขียนลงไฟล์ดังกล่าว อีกครั้งระบบปฏิบัติการจะมั่นใจว่าพื้นที่สำหรับทุกการกระทำค่าใช้จ่ายสามารถใช้ได้ในกรณีที่ต้องการมัน เมื่อกระบวนการจัดสรรหน่วยความจำที่ได้รับมอบหมายพวกเขาเพียงแค่พูดว่า "เฮ้ OS ฉันอาจต้องการสิ่งนี้มาก" ไม่ได้หมายความว่าพวกเขาจะใช้มันจริง ๆ และก็ไม่ได้หมายความว่าพวกเขาจะใช้มันจริง ๆ
สำหรับข้อมูลเพิ่มเติมโปรดดูคำตอบของฉันที่นี่
ทีนี้ทำไมคุณใช้ความมุ่งมั่นนั้นเมื่อกระบวนการของคุณดูเหมือนจะไม่เพิ่มขึ้นเป็นคำถามอื่น หากต้องการเริ่มดูโปรดแสดงแท็บประสิทธิภาพของตัวจัดการงานส่วนหน่วยความจำ