เหตุใดการใช้หน่วยความจำทั้งหมดที่รายงานโดย Windows Task Manager สูงกว่าผลรวมของการใช้หน่วยความจำของกระบวนการทั้งหมดมาก [ซ้ำ]


98

ตัวจัดการงานแสดงการใช้งานหน่วยความจำทั้งหมดของฉันที่ 90% ของทั้งหมด 6 GB ของฉัน แต่ไม่มีกระบวนการใดที่ใช้ RAM มากกว่า 250 MB และผลรวมของ RAM ที่ใช้ในกระบวนการที่ทำงานอยู่ทั้งหมดนั้นน้อยกว่า 2 GB ฉันได้ลองแล้ว:

  • ดูตัวเลขในคอลัมน์ "หน่วยความจำ" ในแท็บ "กระบวนการ" ของตัวจัดการงาน Windows 8
  • ดูที่คอลัมน์ "Working Set", "Private Working Set", "Shared Working Set" และ "Commit Size" บนแท็บ "รายละเอียด" ของ Task Manager
  • ดูคอลัมน์ที่เกี่ยวข้องกับหน่วยความจำที่คล้ายกันใน Process Explorer
  • ฉันได้ลองใช้ Sysinternals RAMMap แล้ว แต่ในขณะที่ฉันประสบกับปัญหาหน่วยความจำเหลือน้อย เมื่อฉันแก้ไขปัญหา RAMMap จะทำงานตามปกติ แต่ ณ จุดนั้นมันก็สายเกินไป

ทั้งหมดแสดงจำนวนหน่วยความจำที่ค่อนข้างน้อยในการใช้งาน

มีผู้คนมากมายที่ถามคำถามนี้กับ Windows รุ่นต่างๆทั่วอินเทอร์เน็ต บางคนจัดการเพื่อแก้ไขปัญหาหน่วยความจำเหลือน้อยโดยมักจะติดตั้งซอฟต์แวร์ใหม่ บางครั้งโดยติดตั้ง windows ใหม่ตั้งแต่เริ่มต้น ฉันกำลังมองหาคำตอบสำหรับคำถามทั่วไปที่สิ่งเหล่านี้แบ่งปันและที่ดูเหมือนจะไม่ได้รับคำตอบจากที่อื่น:

  1. เหตุใดหน่วยความจำที่ใช้ทั้งหมดจึงสูงกว่าหน่วยความจำที่ใช้โดยกระบวนการที่ระบุไว้ทั้งหมดไม่ว่าฉันจะพยายามนับพวกเขาอย่างไร
  2. windows "รู้" ได้อย่างไรว่ามีการใช้หน่วยความจำโดยไม่ทราบว่ามีการใช้โปรแกรมใดอยู่
  3. กระบวนการใดที่อาจใช้หน่วยความจำ แต่ไม่แสดงในรายการ
  4. มีซอฟต์แวร์ใดบ้างที่สามารถให้ข้อมูลเพิ่มเติมเกี่ยวกับหน่วยความจำที่ใช้แล้วได้หรือไม่

รายละเอียดเฉพาะสำหรับปัญหาของฉัน: ตั้งแต่อัปเกรดเป็น Windows 8.1 ปัญหาจะเกิดขึ้นทันทีที่ฉันเข้าสู่ระบบฉันมีหน่วยความจำไม่เพียงพอเมื่อฉันรันโปรแกรมใด ๆ ฉันสังเกตเห็นใน Process Explorer ว่ามีหลายอินสแตนซ์ของ iexplore.exe กำลังทำงานดูเหมือนจะเริ่มโดยอัตโนมัติ อินสแตนซ์หนึ่งโดยเฉพาะนั้นใช้ RAM เพียงไม่กี่ MB แต่พบข้อบกพร่องหลายร้อยล้านหน้า ฉันได้ฆ่ากระบวนการเฉพาะนั้นและการใช้หน่วยความจำลดลงทันที 70%

นำไปสู่คำถามที่เฉพาะเจาะจงหนึ่งข้อ:

  • จะฆ่ากระบวนการหนึ่งที่ควรใช้เพียงไม่กี่ MB เพิ่มหลาย GB ได้อย่างไร

และคำถามโบนัส (ยากมาก):

  • การติดตั้ง Windows ใหม่อีกครั้งฉันจะหลีกเลี่ยงปัญหานี้ได้ทุกครั้งที่ฉันรีคอมพิวเตอร์

3
หน่วยความจำเคอร์เนลยังนับเป็นการใช้งานด้วย โพสต์รูปภาพของ RAMMAp: blogs.technet.com/b/askperf/archive/2010/08/13/ …
magicandre1981

2
ฉันคิดว่าคำถามควรมีชื่อว่า "ทำไมฉันมีหน่วยความจำไม่เพียงพอ"
surfasb

คำถามนี้เป็นไปไม่ได้ที่จะตอบโดยไม่เฉพาะเจาะจง แสดงรายการโปรแกรมที่ติดตั้ง หรือดีกว่าเป็นการดัมพ์ของกระบวนการที่กำลังรันจาก Performance Monitor
surfasb

1
คุณปิดเครื่อง / รีสตาร์ทเครื่องคอมพิวเตอร์โดยสมบูรณ์หรือคุณใช้การปิดระบบไฮบริด (เริ่มต้นใน Windows 8)? หลังจากเปลี่ยนมาใช้ Windows 8 ฉันมีปัญหาคล้ายกัน ฉันคิดว่ามีไดรเวอร์หนึ่งตัวใช้ RAM จริงของฉันมากขึ้นเรื่อย ๆ และไม่ให้กลับมาแม้หลังจากปิดและเปิดคอมพิวเตอร์ ในอีกไม่กี่สัปดาห์จะมีการสะสมเป็นหลายกิกะไบต์ ดังนั้นตอนนี้ทุก ๆ สองสามวันฉันคลิกที่ "เริ่มใหม่" หรือกด Shift ค้างไว้ในขณะที่คลิก "ปิด" เพื่อปิดเครื่อง PC จริง ๆ
Robert

2
ในกรณีของฉันมันเป็นหน่วยความจำ "Driver Locked" ซึ่งสงวนไว้โดย Hyper-V เนื่องจากมีการเปิดใช้งาน "Dynamic Memory" ฉันต้องหยุดการทำงานของ VM ปิดการตั้งค่าและเริ่มต้นใหม่ ขอบคุณสำหรับคำแนะนำ RAMMap
Dagelf

คำตอบ:


7

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

เหตุใดหน่วยความจำที่ใช้ทั้งหมดจึงสูงกว่าหน่วยความจำที่ใช้โดยกระบวนการที่ระบุไว้ทั้งหมดไม่ว่าฉันจะพยายามนับพวกเขาอย่างไร

เพราะระบบปฏิบัติการไม่เสียหน่วยความจำกายภาพ (RAM) เว้นแต่จะไม่มีทางเลือก

windows "รู้" ได้อย่างไรว่ามีการใช้หน่วยความจำโดยไม่ทราบว่ามีการใช้โปรแกรมใดอยู่

เพราะไม่มีโปรแกรมใช้งานอยู่ ลองพิจารณาตัวอย่างเช่นหน่วยความจำที่มีรหัสสำหรับโปรแกรมที่เพิ่งยกเลิก ไม่มีโปรแกรมใช้งานอยู่ แต่ใช้หน่วยความจำนั้นเนื่องจากไม่ว่างและมีข้อมูลที่อาจเป็นประโยชน์ (ในกรณีที่โปรแกรมทำงานอีกครั้ง)

กระบวนการใดบ้างที่อาจใช้หน่วยความจำ แต่ตอนนี้ปรากฏในรายการ

มันไม่ได้ใช้โดยกระบวนการ

มีซอฟต์แวร์ใดบ้างที่สามารถให้ข้อมูลเพิ่มเติมเกี่ยวกับหน่วยความจำที่ใช้แล้วได้หรือไม่

RAMMapสามารถทำได้

มีความเป็นไปได้เพียงสองอย่างเท่านั้น RAM สามารถใช้ได้หรือเสียเปล่า เห็นได้ชัดว่าสิ่งแรกดีกว่า หน่วยความจำฟรีจะสูญเปล่าไปตลอดกาล - เครื่อง 4GB ไม่สามารถใช้ 2GB ได้ในวันนี้เพื่อใช้งาน 6GB ในวันพรุ่งนี้ หากคุณกำลังคิดว่า "ฉันต้องการให้เป็นอิสระตอนนี้เพื่อที่ฉันจะได้ใช้ในภายหลัง" ลืมมัน คุณสามารถใช้ตอนนี้และใช้ในภายหลัง

จะฆ่ากระบวนการหนึ่งที่ควรใช้เพียงไม่กี่ MB เพิ่มหลาย GB ได้อย่างไร

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

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

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


14
PS: ฉันใช้คำว่า "หน่วยความจำ" ไม่ใช่เพราะฉันไม่รู้ความแตกต่างระหว่าง RAM และ VM แต่เพราะคอมพิวเตอร์ของฉันบอกฉันแค่ว่ามันเป็น "หน่วยความจำ" โดยไม่ให้ข้อมูลใด ๆ กับฉันเลยวิธี (ฉันคิดว่ามันหมายถึง RAM ด้วยเหตุผลที่ฉันระบุไว้ในความคิดเห็นก่อนหน้า แต่ฉันไม่แน่ใจ) ฉันอยากให้คุณใช้คำศัพท์จริง (ซึ่งฉันสามารถค้นหาได้ถ้าจำเป็น) กว่าคำเปรียบเทียบทางการเงินที่ซับซ้อน :)
Josh

91
-1 เนื่องจากหลังจากอ่านคำตอบและความคิดเห็นทั้งหมดมันยังไม่ชัดเจนว่าเหตุใดหน่วยความจำที่ใช้ทั้งหมดจึงสูงกว่าหน่วยความจำที่ใช้โดยกระบวนการที่ระบุไว้ทั้งหมด
Bennett McElwee

6
คำศัพท์นั้นที่ "ใช้" หน่วยความจำแม้ว่าจะไม่ได้ใช้โปรแกรม แต่ก็ไม่เหมือนกับความหมายปกติของคำเช่น "ใช้แล้ว" และ "ฟรี" - อาจเป็นคำศัพท์ของ Microsoft ไม่ใช่ของคุณ อย่างไรก็ตามสมมติว่าขณะนี้ 50% ของ RAM ถูกใช้โดยโปรแกรมที่กำลังทำงานอยู่และ 25% ไม่ได้ถูกใช้โดยโปรแกรมที่กำลังทำงานอยู่ แต่มีข้อมูลที่อาจเป็นประโยชน์ในอนาคต แต่ก็สามารถถูกทิ้งได้ การเพิ่มเหล่านั้นเข้าด้วยกันและแสดง "หน่วยความจำ: 75%" บ่งบอกถึงข้อมูลที่เป็นประโยชน์กับผู้ใช้ ฉันคิดว่านั่นเป็นสิ่งที่เกิดความสับสนอย่างกว้างขวาง
Bennett McElwee

2
@BennettMcElwee ไม่มีวิธีที่ดีในการลดการใช้หน่วยความจำให้เป็นจำนวนที่ง่าย แต่ผู้ใช้ยืนยัน สิ่งนี้ทำให้นักพัฒนาอยู่ในตำแหน่งที่ไม่สบายใจ - พวกเขาสามารถระบุหมายเลขที่ไม่เป็นประโยชน์เสมอ นักพัฒนาระบบปฏิบัติการและ GUI ส่วนใหญ่เลือกตัวเลือกแรก - พวกเขาให้หมายเลขที่นำไปสู่ความสับสนมากมาย หากคำถามของคุณคือ "แรมมากขึ้นจะทำให้ระบบของฉันทำงานได้ดีขึ้น" คำตอบคือ - มันยากมากที่จะบอกแม้แต่กับผู้เชี่ยวชาญ
David Schwartz

2
@DavidSchwartz คำตอบของคุณไม่ได้อธิบายเช่นนั้นมันก็ระบุไว้ คุณสามารถให้ลิงค์ใด ๆ เพื่อสำรองการอ้างสิทธิ์นั้น ๆ ได้หรือไม่? ฉันกำลังตีความ "หน่วยความจำกายภาพ XX%" เพื่อหมายความว่า XX% ของ RAM ที่ติดตั้งทางกายภาพกำลังถูกใช้งานในปัจจุบันและไม่สามารถใช้งานได้สำหรับกระบวนการอื่น ฉันเชื่อว่าฉันได้รับการตรวจสอบจากข้อเท็จจริงที่ว่าสูงกว่า 90% ระบบจะเสี่ยงต่อการถูกล็อคและเมื่อแอปพลิเคชันพยายามจัดสรรหน่วยความจำเกิน 100% พวกเขาจะล้มเหลวอย่างสิ้นเชิง จากประสบการณ์ของฉันนี่ไม่ใช่ระบอบการปกครองมาตรฐานที่ระบบส่วนใหญ่ทำงาน
John Neuhaus
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.