คำเตือนหน่วยความจำต่ำของ Windows 10 เมื่อฉันมีหน่วยความจำที่มีอยู่มากมาย


25

ฉันได้รับปัญหาที่ถ้าระบบของฉันไม่กี่วันโดยไม่ต้องรีบูตฉันจะเริ่มได้รับการเตือนว่า "ปิดโปรแกรมเพื่อป้องกันการสูญเสียข้อมูล" แล้วบทสนทนาบอกฉันปิดโปรแกรมซึ่งฉันสามารถยกเลิกหรือกด "โปรแกรมปิด" และ Windows จะบังคับปิดบางส่วนหรือทั้งหมดของแอปพลิเคชั่นที่อยู่ในกล่องโต้ตอบ

ฉันเปิดตัวจัดการงานและเห็นว่ามีการใช้หน่วยความจำของฉันประมาณ 30% เท่านั้น:

การใช้งาน 33%

เมื่อฉันเปิดการตรวจสอบทรัพยากรเพื่อดูว่ามีการใช้หน่วยความจำที่กำหนดไว้เท่าใดฉันก็ยังเห็นการใช้หน่วยความจำค่อนข้างต่ำ:

การตรวจสอบทรัพยากร

ฉันมีปัญหานี้มาระยะหนึ่งแล้วและพยายามหาทางแก้ไข ฉันตรวจสอบสาเหตุเช่นการรั่วไหลของไดรเวอร์โดยใช้ poolmon แต่ไม่เคยเห็นอะไรเลยใน poolmon ที่ตรงกับสิ่งที่คนอื่น ๆ อธิบายไว้ว่าเป็นธงสีแดงสำหรับการรั่วไหลของหน่วยความจำไดรเวอร์ สิ่งที่ทำให้ฉันสับสนเป็นพิเศษคือเหตุใด Win10 จึงบอกให้ฉันปิดแอปพลิเคชันเมื่อฉันมีหน่วยความจำระบบเพียง 33% เท่านั้นที่ใช้งาน


3
ลองไปที่ตัวจัดการงานและไปที่แท็บประสิทธิภาพ อะไรหน่วยความจำความมุ่งมั่นแสดงข้อมูล?
DrZoo

ฉันไม่ได้บันทึกภาพหน้าจอสำหรับมัน แต่ความจำที่ได้รับมอบหมายของฉันมีอยู่ในระดับสูงเช่น 17.5gb / 19gb
Brandon

คำตอบ:


15

คาดเดาป่าที่นี่

คุณได้ปิดการใช้งานไฟล์ swap ของคุณโดยทำตามคำแนะนำ "การเพิ่มประสิทธิภาพ" แบบสุ่มของใครบางคน

คุณมีไดรเวอร์ระบบปฏิบัติการบางชนิดที่ต้องการบล็อกขนาดใหญ่ของ RAM จริงที่ต่อเนื่องกัน แต่ไม่สามารถรับได้เพราะ RAM ทางกายภาพทั้งหมดมีการแยกส่วนเมื่อเวลาผ่านไป และเนื่องจากไฟล์ swap ถูกปิดใช้งานจึงไม่สามารถทำการจัดเรียง RAM ได้

เปิดใช้งานไฟล์ swap ของคุณ

อย่างที่ฉันพูดไป


ฉันมีชุดไฟล์เพจขนาดสูงสุด 3GB นี่คือสิ่งที่คุณหมายถึงโดย swapfile หรือเป็นสิ่งที่มีการจัดการแยกต่างหากใน Windows 10? มันเป็นไปไม่ได้ที่ฉันจะทำอะไรแบบนี้ฉันมีปัญหาด้านประสิทธิภาพที่แย่มากเมื่อฉันสร้างเครื่องนี้ครั้งแรกในวันที่ 10/2015 และลองทำหลาย ๆ อย่างเช่นปิดการใช้งานที่จอดรถหลักเพื่อแก้ไข มันมีแผนการจัดการพลังงานที่ลดกำลังของฉันลงเหลือ 10% และทำให้ส่วนประกอบทั้งหมดหมดและนั่นเป็นสาเหตุที่ฉันมีปัญหาเกี่ยวกับประสิทธิภาพของระบบ แต่เป็นไปได้ที่ฉันอาจทำสิ่งที่คุณพูดในตอนนั้น
Brandon

1
เปลี่ยนขนาดไฟล์เพจของคุณเป็น "จัดการระบบ" และปัญหาของคุณอาจหายไป
Scott Chamberlain

ฉันเคยมีการจัดการระบบแล้วและฉันยังคงมีปัญหาเดียวกัน เมื่อฉันตั้งค่าให้ระบบมีการจัดการ pagefile จะสูงสุดที่ฉันเชื่อว่า 64gb และจากนั้นเมื่อความมุ่งมั่นได้สูงขึ้นจริง ๆ ฉันยังคงได้รับคำเตือนหน่วยความจำต่ำเดียวกัน แต่ฉันยังคงเห็นหน่วยความจำกายภาพ 70% หรือมากกว่านั้นและไม่มีข้อบ่งชี้ใน Resource Monitor ว่าขณะนี้มีหน่วยความจำมากกว่า 60 + gb ที่กำหนดไว้ในกระบวนการใด ๆ
Brandon

ฉันเห็นด้วยอย่างยิ่งกับ Zan และ Scott มันเป็นไฟล์เพจของคุณที่ทำให้เกิดปัญหานี้ (ดูwindowsitpro.com/windows-10/…สำหรับแหล่งข้อมูลอื่นที่กล่าวถึงสิ่งนี้ด้วย) ตั้งเป็นระบบที่ถูกจัดการและหากปัญหาปรากฏขึ้นอีกครั้งจากนั้นเริ่มการตรวจสอบ
Ƭᴇcʜιᴇ007

ดังนั้นฉันคิดว่าระบบจัดการไฟล์เพจเป็นคำตอบหลักที่นี่ ดูเหมือนว่าการตั้งค่าเป็นแบบคงที่ 3gb นั้นไม่เหมาะสำหรับระบบ Windows 10 ฉันใช้โซลูชันนี้เมื่อสองสามสัปดาห์ก่อนและปล่อยให้มันใช้งานตามปกติเพื่อดูว่าเกิดอะไรขึ้นและในขณะที่ฉันยังเห็นหน่วยความจำที่ได้รับมอบหมายมากกว่าที่คิดไว้ในคอลัมน์การตรวจสอบทรัพยากรของหน่วยความจำที่มุ่งมั่น คำเตือนหรือปัญหาในขณะนี้
Brandon

14

คำถามสุดท้ายของคุณ - เวอร์ชันย่อ: ข้อความแสดงข้อผิดพลาดเกี่ยวกับพื้นที่ที่อยู่เสมือนที่ "ส่งมอบแล้ว" หากคุณดูกราฟ 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 ฉันอาจต้องการสิ่งนี้มาก" ไม่ได้หมายความว่าพวกเขาจะใช้มันจริง ๆ และก็ไม่ได้หมายความว่าพวกเขาจะใช้มันจริง ๆ

สำหรับข้อมูลเพิ่มเติมโปรดดูคำตอบของฉันที่นี่

ทีนี้ทำไมคุณใช้ความมุ่งมั่นนั้นเมื่อกระบวนการของคุณดูเหมือนจะไม่เพิ่มขึ้นเป็นคำถามอื่น หากต้องการเริ่มดูโปรดแสดงแท็บประสิทธิภาพของตัวจัดการงานส่วนหน่วยความจำ


ฉันไม่มีคำพูดใดที่จะอธิบายคำตอบที่สมบูรณ์แบบนี้ได้ ขอขอบคุณ.
Vinicius Tavares

-2

ความเป็นไปได้อีกอย่างหนึ่งคือคุณใช้ Win10 32 บิตไม่ใช่ 64 บิต ขณะที่คุณติดตั้ง RAM ขนาด 16GB, มีข้อ จำกัด ของระบบปฏิบัติการ 32- บิตที่ใช้งานได้จริงมากกว่า 4 แน่นอน นอกจากนี้ระบบปฏิบัติการจะกำหนดขีด จำกัด / ต่อกระบวนการ / จำนวน RAM ที่สามารถร้องขอได้โดยไม่คำนึงถึง RAM จริง หากเป็นเช่นนั้นคุณไม่สามารถทำอะไรได้มากไปกว่าเปลี่ยนไปใช้ระบบปฏิบัติการ 64 บิตหรือเรียกใช้แอพพลิเคชั่นน้อยกว่าพร้อมกัน


2
เป็นไปไม่ได้ที่จะใช้งาน Win10 32 บิตและให้ Task Manager แสดงผลรวม 16 GB เช่นเดียวกับใน OQ และ btw ข้อ จำกัด ต่อกระบวนการของระบบปฏิบัติการที่อยู่ในหน่วยความจำเสมือนไม่ใช่ RAM ไม่มีการโทรที่คุณสามารถทำได้ใน Windows เพื่อจัดสรร RAM ต่อหนึ่งรายการ (ดี AWE แต่นั่นใช้สิทธิ์ระดับผู้ดูแลระบบและแทบไม่มีอะไรใช้เลยยกเว้นบางโปรแกรมระบบ) คุณจัดสรรพื้นที่ที่อยู่เสมือน (พูดกับ VirtualAlloc) แล้วใช้มัน ในขณะที่คุณใช้ระบบปฏิบัติการจะจัดสรร RAM ให้กับกระบวนการของคุณ ("demand paging") แต่แน่นอนว่าไม่ใช่ทั้งหมดที่ต้องรู้ใน RAM ในคราวเดียว
เจมี่ Hanrahan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.