Windows ใช้ RAM มากเกินไปวิธีวินิจฉัยหมูทรัพยากร


73

ฉันมี RAM ของระบบ 16GB เมื่อเริ่มต้นโดยไม่มีแอปพลิเคชันเปิดยกเว้นตัวจัดการงาน Windows กำลังใช้ RAM ประมาณ 3gb ฉันดูในแท็บกระบวนการ แต่ดูเหมือนว่าจะไม่มีอะไรผิดปกติ ฉันจะทราบได้อย่างไรว่าเหตุใด Windows ของฉันจึงใช้ RAM มาก

ป้อนคำอธิบายรูปภาพที่นี่

กระบวนการทั้งหมดจากผู้ใช้ทั้งหมด

ป้อนคำอธิบายรูปภาพที่นี่


อ่านจาก poolmon ดูเหมือนว่าไดรเวอร์เครือข่ายไร้สายของฉันใช้ RAM ประมาณ 0.4GB แม้ว่าฉันจะลบออกก็ยังคงใช้ 2.6GB เมื่อเริ่มต้นซึ่งยังคงมากเกินไป

ป้อนคำอธิบายรูปภาพที่นี่


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

ป้อนคำอธิบายรูปภาพที่นี่


3
ก่อนอื่นคุณมีเพียง 12GB หนึ่งในสี่แท่ง 4GB ของคุณไม่ดีหรืออยู่ในระดับต่ำหรือเมนบอร์ดของคุณไม่รองรับ 16GB ประการที่สองคุณลองใช้โปรแกรมความปลอดภัยเพื่อตรวจสอบมัลแวร์หรือไม่ Security Essentials ติดตั้งในตัวดังนั้นโปรดอัปเดตคำจำกัดความและเรียกใช้การสแกน ลองใช้โปรแกรมต่อต้านรูทคิทด้วยเนื่องจากรูทคิทจะซ่อนเฉพาะ (แม้ว่าพวกเขามักจะพยายามเก็บโปรไฟล์ไว้ในระดับต่ำเพื่อให้ไม่มีใครสังเกตเห็นและการใช้ RAM สักสองสามกิกะไบต์เป็นการผสมผสานกันอย่างยากลำบาก)
Synetech

คุณอาจต้องการดูประสิทธิภาพ -> การตรวจสอบทรัพยากร
Journeyman Geek

ลองใช้คำสั่ง tasklist เปลี่ยนเส้นทางเอาต์พุตไปที่ไฟล์ C: \ blah> tasklist> aa จากนั้นเปิดไฟล์ aa คุณจะเห็นยอดรวมสำหรับแต่ละกระบวนการเช่น 15,100K ลบ K หลังจากพวกเขาและรวมผลรวมกับ Excel ดูว่ายอดรวมทั้งหมดตรงกับตัวเลขที่ใช้ซึ่งตัวจัดการงานให้คุณใกล้กราฟเพื่อใช้งานหรือไม่ สำหรับฉันทั้งหมดจากรายการงานคือ 4GB และผู้จัดการงานบอกว่า 4.5GB ฉันไม่สามารถอธิบายความแตกต่างที่ฉันมี แต่มันไม่ใหญ่มาก มันน่าสนใจถ้าคุณมีความแตกต่างอย่างมาก
barlop

ฉันไม่มี excel
Vader

1
แท็ก NDxx คือ ndis.sys ฉันเดาว่า BRCM เป็น Broadcom นั่นจะชี้ไปที่อะแดปเตอร์เครือข่ายของคุณเป็นปัญหา
เดวิดมาร์แชลล์

คำตอบ:


82

คุณมีหน่วยความจำรั่วที่เกิดจากไดรเวอร์ ดูที่ค่าสูงของหน่วยความจำเคอร์เนลที่ไม่ใช่เพจ ในกรณีของคุณเกิน 3.7 GB คุณสามารถใช้poolmonเพื่อดูว่าไดรเวอร์ตัวใดที่ทำให้เกิดการใช้งานสูง

ติดตั้งWindows WDK , เรียกใช้ poolmon, เรียงลำดับผ่านPหลังจากประเภทพูลเพื่อให้เพจไม่อยู่ด้านบนและผ่านBหลังจากไบต์เพื่อดูแท็กที่ใช้หน่วยความจำส่วนใหญ่ เรียกใช้ poolmon โดยไปที่โฟลเดอร์ที่ติดตั้ง WDK ไปที่เครื่องมือ (หรือ C: \ Program Files (x86) \ Windows Kits \ 10 \ Tools \ x64) แล้วคลิก poolmon.exe

ตอนนี้ดู pooltag ที่ใช้หน่วยความจำส่วนใหญ่ดังที่แสดงที่นี่:

ป้อนคำอธิบายรูปภาพที่นี่

ตอนนี้เปิดพรอมต์คำสั่งและเรียกใช้คำสั่ง findstr เมื่อต้องการทำสิ่งนี้ให้เปิดพรอมต์คำสั่งและพิมพ์ "cd C: \ Windows \ System32 \ drivers" โดยไม่มีเครื่องหมายอัญประกาศ จากนั้นพิมพ์ "findstr / s __ . " โดยที่ __ คือแท็ก (ชื่อซ้ายสุดใน poolmon) ทำสิ่งนี้เพื่อดูว่าไดรเวอร์ใดใช้แท็กนี้:

ป้อนคำอธิบายรูปภาพที่นี่

ตอนนี้ไปที่โฟลเดอร์ไดรเวอร์ (C: \ Windows \ System32 \ drivers) และคลิกขวาที่ไดรเวอร์ที่มีปัญหา (intmsd.sys ในตัวอย่างภาพด้านบน) คลิกคุณสมบัติไปที่แท็บรายละเอียดเพื่อค้นหาชื่อผลิตภัณฑ์ ค้นหาการอัปเดตสำหรับผลิตภัณฑ์นั้น

หาก pooltag แสดงเฉพาะไดรเวอร์ Windows หรือแสดงอยู่ใน pooltag.txt ( "C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\triage\pooltag.txt")

คุณต้องใช้Xperf เพื่อติดตามสิ่งที่ทำให้เกิดการใช้งาน ติดตั้งWPT จาก Windows SDKเปิดcmd.exe ในฐานะผู้ดูแลและเรียกใช้สิ่งนี้:

xperf -on PROC_THREAD + LOADER + POOL -Stackwalk PoolAlloc + PoolFree + PoolAllocSession + PoolFreeSession -BufferSize 2048 -MaxFile 1024 -FileMode Circular && timeout -1 && xperf -d C: \ pool.etl

จับ 30 -60s ของการเจริญเติบโต เปิด ETL ด้วย WPA.exe เพิ่มกราฟพูลลงในบานหน้าต่างการวิเคราะห์

วางคอลัมน์ pooltag ไว้ที่ตำแหน่งแรกและเพิ่มคอลัมน์สแต็ก ตอนนี้โหลดสัญลักษณ์ภายใน WPA.exe และขยายสแต็กของแท็กที่คุณเห็นใน poolmon

ป้อนคำอธิบายรูปภาพที่นี่

ตอนนี้หาไดรเวอร์ของบุคคลที่สามอื่น ๆ ที่คุณสามารถดูได้ในกอง ที่นี่Threแท็ก (เธรด) ใช้โดย AVKCl.exe จาก G-Data ค้นหาการอัปเดตไดรเวอร์ / โปรแกรมเพื่อแก้ไข


1
โอ้ขอโทษ. @Jebediah Kerman คุณเรียกใช้คำสั่ง findstr แล้วหรือยัง จากชื่ออาจเป็นไดรเวอร์การ์ดเครือข่ายที่เกี่ยวข้อง หากคุณยังมีปัญหาให้เรียกใช้ RAMMap จัดเก็บข้อมูลเป็น RMP บีบอัดไฟล์ RMP แล้วอัปโหลดไฟล์ zip
magicandre1981

นี่อาจฟังดูโง่ แต่ฉันจะเริ่ม poolmon ได้อย่างไร ฉันเคยสามารถค้นหา "poolmon.exe" และเปิดใช้งานได้
Vader

@JebediahKerman ฉันคิดว่าคุณทำสิ่งนี้แล้วและพบแท็ก รูปภาพจากโพสต์ของคุณไม่ใช่ poolmon ของคุณใช่ไหม
magicandre1981

ภาพเป็นของฉัน ด้วยเหตุผลบางอย่างดัชนีการค้นหาจึงไม่สมบูรณ์
เวเดอร์

@JebediahKerman คุณมองว่า NDFT นี้คืออะไร คุณยังสามารถใช้ xperf เพื่อติดตามการใช้สระว่ายน้ำ: channel9.msdn.com/Shows/Defrag-Tools/ ......
magicandre1981

15

ก่อนอื่นฉันจะได้คำตอบที่ละเอียดกว่านี้ก่อน ในภาพหน้าจอแรกของคุณ Non-Paged Pool (การใช้งานหน่วยความจำเคอร์เนล) อยู่ที่ 1.3GB ดูเหมือนว่าจะสูงผิดปกติโดยเฉพาะอย่างยิ่งหลังจาก 30 นาทีหลังจากบู๊ต ฉันคิดว่าฉันเห็น NP Pool สูงขึ้นหลังจากใช้งานเป็นระยะเวลานานหรือด้วยโปรแกรมที่รั่วเหมือนตะแกรง ในทางตรงข้าม NP Pool ของฉันมักจะอยู่ระหว่าง 100 ถึง 200 เมกะไบต์และพูลเพจของฉันอาจสูงถึง 400 หรือ 500 (และหลังจากระบบของฉันทำงานโดยไม่ต้องรีบูตเป็นเวลาหลายสัปดาห์)


คุณสามารถเปิดใช้งานคอลัมน์เพิ่มเติมบางอย่างในตัวจัดการงานโดยคลิกขวาที่ส่วนหัวของคอลัมน์และเลือกคอลัมน์ที่เลือก คุณควรเพิ่มWorking Set (private), Working Set (shared), และCommit NP Poolฉันจะสแกนกระบวนการทั้งหมดของคุณจากผู้ใช้ทั้งหมดและดูว่ากระบวนการใดมี NP Pool มากกว่า 256KB หรือไม่ หากคุณเห็นสิ่งใดโดยเฉพาะอย่างยิ่งสิ่งใดก็ตามที่สูงกว่ามากอาจเป็นสาเหตุของปัญหาหรืออย่างน้อยก็ส่วนหนึ่ง

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

Non-Paged Pool เป็นหน่วยความจำที่ไม่สามารถและจะไม่ถูกเปลี่ยนจากหน่วยความจำกายภาพ ... ซึ่งเป็นการใช้งานหน่วยความจำกายภาพขั้นต่ำอย่างถาวรของคุณ หน่วยความจำ NP Pool มักจะมีรหัสโปรแกรมและส่วนสำคัญที่ต้องอยู่ในหน่วยความจำกายภาพเพื่อทำงานอย่างถูกต้องหรือปลอดภัยฮีปพิเศษ ฯลฯ กระบวนการทั้งหมด 60 กระบวนการหากทั้งหมดมีหน่วยความจำ NP Pool 256KB ดังนั้นการใช้หน่วยความจำฟิสิคัลขั้นต่ำสุดของคุณ จะอยู่ที่ประมาณ 15,360KB ในกรณีส่วนใหญ่หนึ่งหรือสองแอพอาจมี 256KB NP Pool ในขณะที่ส่วนใหญ่มีน้อยกว่ามักจะน้อยกว่ามาก (หรือไม่มี) ไม่น่าเป็นไปได้สูงที่ระบบจะประมวลผลชุดการทำงานทั้งหมดของกระบวนการทั้งหมดดังนั้นอย่าคาดหวังว่าการใช้หน่วยความจำจะลดลง


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

Windows จัดการหน่วยความจำให้กับคุณและหน้าข้อมูลโดยอัตโนมัติเข้าและออกจากหน่วยความจำไปยังและจากไฟล์หน้า (swap) สำหรับคุณ หากคุณเรียกใช้โปรเซสที่ต้องการหน่วยความจำ 9GB และระบบของคุณใช้ 4GB อยู่แล้ว (จาก 12GB) จากนั้นระบบจะพิจารณาโดยอัตโนมัติว่ากระบวนการใดที่ไม่ต้องการเข้าถึงชุดการทำงานทั้งหมดของพวกเขาโดยทันที ของพูลพูออกเพื่อแลกเปลี่ยนเพื่อเพิ่ม 1GB พิเศษนั้น หากกระบวนการขนาดใหญ่ของคุณต้องการหน่วยความจำเพิ่มในที่สุด windows จะลดชุดการทำงานของกระบวนการอื่น ๆ ต่อไปจนกว่าจะมีพื้นที่ว่างเพียงพอในการจัดสรรบล็อกที่ร้องขอใหม่ กระบวนการขนาดใหญ่ของคุณอาจใช้หน่วยความจำที่มีอยู่ทั้งหมดยกเว้น NP Pool และอาจมีค่าใช้จ่ายขั้นต่ำเพิ่มเติมบางอย่างสำหรับการดำเนินการตามกระบวนการที่ไม่อนุญาตให้ Windows เพิ่มชุดการทำงานให้มากขึ้น (i อี พวกเขามีข้อผิดพลาดของหน้าที่ค้างอยู่ซึ่ง Windows จะเปลี่ยนหน่วยความจำกายภาพเป็นอย่างอื่น แต่เนื่องจากมีการร้องขอพวกเขาจึงไม่สามารถย้ายได้)

หากกระบวนการต้องการหน่วยความจำมากกว่าที่ได้รับอนุญาตให้เข้าถึง (กระบวนการแบบ 32 บิตมักจะสามารถเข้าถึง 2Gb และบางอย่างน้อยกว่า 4Gb ด้วยเทคนิคที่ได้รับการปรับปรุงในขณะที่กระบวนการแบบ 64 บิตมักจะเข้าถึงหน่วยความจำประมาณ 48Gb ในแต่ละครั้ง) เพื่อจำลองหน่วยความจำด้วยพื้นที่สวอป หากแอป 32 บิตต้องการใช้พื้นที่ 2Gb สูงสุดที่อนุญาต แต่มีเพียง 1.2Gb เท่านั้น Windows จะจอง 2Gb เต็มในไฟล์หน้าและย้ายข้อมูลของกระบวนการเข้าและออกจากไฟล์หน้าตามต้องการเพื่อ รองรับการใช้งานหน่วยความจำของแอพ การใช้งาน "หน่วยความจำ" ทั้งหมดในกรณีนี้อาจดูเหมือนจะมากกว่าหน่วยความจำกายภาพที่มีอยู่เมื่อดำเนินการโดย Commit ทั้งหมด Total Commit มักจะมีขนาดสูงสุดที่ขนาดไฟล์ทั้งหมดของหน้าซึ่งเมื่อจัดการโดยระบบมักจะเป็นจำนวนหน่วยความจำกายภาพ 2-3 เท่า ในกรณีของคุณ


หนึ่งจุดสุดท้าย คุณตอบว่ามี RAM ขนาด 16Gb ซึ่งตัวจัดการงานจะเห็น RAM ขนาด 12Gb เท่านั้น หนึ่งในสองสิ่งที่นี่ ไม่ว่าระบบของคุณจะมี RAM เพียง 12Gb เท่านั้นหรือแท่งใดแท่งหนึ่งของคุณไม่ได้ลงทะเบียนอย่างถูกต้อง หากไม้ ram (ฉันสมมติว่า 4x 4Gb sticks) มันอาจไม่ดีอาจไม่ได้รับการติดตั้งอย่างเหมาะสมในเมนบอร์ดของคุณหรือแผงวงจรหลักของคุณอาจมีปัญหาการตรวจจับหน่วยความจำ

ในการตรวจสอบว่าเป็นรุ่นหลังคุณควรอัพเดต BIOS เมนบอร์ดของคุณเป็นเวอร์ชันล่าสุดก่อน ฉันมีปัญหาที่คล้ายกัน ... หก Tripple-Channel DDR3 sticks ของ ram (6x 2Gb) ของฉันทั้งหมดดีตามการทดสอบแต่ละรายการ ... แต่เมนบอร์ดของฉันสุ่มตัดสินใจที่จะไม่นับหนึ่งหรือสองของพวกเขาทุกครั้ง มักจะทิ้งฉันด้วย ram เพียง 8Gb อัพเดต BIOS แก้ไขปัญหาได้และฉันสามารถเข้าถึงหน่วยความจำ 12Gb ทั้งหมดในตอนนี้


ที่น่าสนใจ .. และฉันเพิ่งสังเกตเห็นว่าหน่วยความจำที่ไม่ใช่เพจเพจของเขามีขนาดใหญ่มาก .. ด้วยขนาดหน้าจอ 539MB, หน้าเพจที่ 139MB ไม่ใช่ผู้รู้อย่างชัดเจนมากกว่าฉันเกี่ยวกับเรื่องนี้ แต่คุณคิดผิดทั้งหมด เขียน "Total Commit มักจะสูงสุดที่ขนาดไฟล์ทั้งหมดของหน้า" RAM ของฉันคือ 12GB ฉันตั้งค่า pagefile ของฉันเป็น 4000MB (3.8GB?) นาทีและหน่วยความจำ 1.5-2x เป็น max.My กระทำสูงสุดคือ 15GB (กระทำ = 7 / 15 ในปัจจุบัน), pagefile ของฉันคือประมาณ 4GB หรืออาจจะน้อยกว่าเช่น 3.8GB.Max Commit ก็เหมือนขนาดไฟล์ pagefile + ขนาด RAM เมื่อ pagefile ของฉันคือ 12GB ฉันยอมรับได้สูงสุดประมาณ 24GB Pagefile เกือบ 3.8GB หรือ 4GB กระทำสูงสุดคือ 15GB
barlop

@barlop: คุณค่อนข้างเข้าใจผิดว่ากระทำคืออะไร ในทางเทคนิคแล้วการคิดค่าธรรมเนียมเป็นจำนวนรวมของ "พื้นที่หน่วยความจำที่สามารถเข้าถึงได้จริง" รวมถึงพื้นที่ที่รองรับโดยผู้จัดการหน่วยความจำส่วนขยายและการรับรู้ที่อยู่ขนาดใหญ่ การยอมรับสูงสุดจะไม่เป็นไฟล์เพจ + RAM แต่จะอธิบายว่าเป็นพื้นที่ที่อยู่เสมือนที่จัดการโดยระบบทั้งหมด โดยทั่วไปไฟล์หน้าจะครอบคลุมอย่างน้อยที่สุดขนาดหน่วยความจำทางกายภาพทั้งหมดและขยายเพิ่มเติมเกินขนาดหน่วยความจำทางกายภาพทั้งหมด ในกรณีของคุณฉันคาดหวังว่าจะได้รับอย่างน้อย 18Gb (1.5x) หรือ 24Gb (2x) อย่างไรก็ตามนั่น ...
jrista

... เป็นกรณีของไฟล์เพจที่มีการจัดการระบบ ดูเหมือนว่าคุณได้ปรับแต่งการตั้งค่าไฟล์หน้าของคุณด้วยตนเองในกรณีนี้ฉันจะต้องรู้เพิ่มเติมเกี่ยวกับการกำหนดค่าเฉพาะของคุณเพื่อบอกคุณว่าเหตุใดการกระทำในปัจจุบันของคุณคือ 15Gb (เช่นไฟล์หน้า 3.8 / 4Gb จะระบุว่ากระทำการ 16Gb ไม่ใช่ 15Gb .) เป็นไปได้ทั้งหมดที่จะกำหนดค่าไฟล์เพจด้วยตนเองหรือไฟล์เพจที่เล็กเกินไปและอาจนำไปสู่ปัญหาประสิทธิภาพการทำงานที่แปลกและปัญหาการจัดสรรหน่วยความจำ คำแนะนำที่ดีที่สุดยกเว้นว่าคุณมีการตั้งค่าเซิร์ฟเวอร์ที่เฉพาะเจาะจง (เช่นฐานข้อมูล) คือการอนุญาตให้ windows จัดการไฟล์หน้า
jrista

โน้ตตัวสุดท้าย เพื่อประสิทธิภาพสูงสุดขอแนะนำให้ windows จัดสรรขนาดหน้าไฟล์สูงสุดล่วงหน้า โดยปกติแล้วจะทำในการตั้งค่าเซิร์ฟเวอร์เช่นฐานข้อมูล SQL Server ซึ่งคุณสามารถจัดสรรล่วงหน้า 64Gb หรือมากกว่า (โดยปกติคือขนาดแรมจริง 2 เท่าดังนั้นอาจเท่ากับ 128Gb หรือ 256Gb) ไปยังไฟล์หน้าซึ่งมีการกระจายอย่างเท่าเทียมกันในหลายดิสก์ทางกายภาพ . ไฟล์เพจแบบกระจายโดยเฉพาะอย่างยิ่งเมื่อมีการจัดสรรล่วงหน้าเป็นขนาดสูงสุดอนุญาตให้มีการอ่าน / เขียนบนดิสก์ที่เข้าร่วมทั้งหมดซึ่งช่วยให้ประสิทธิภาพการเพจดีขึ้นผ่าน I / O แบบขนาน
jrista

ตัวอย่างของการโหลดหน่วยความจำจำนวนมากปัจจุบันระบบของฉันมี: การใช้หน่วยความจำฟิสิคัล 7.5 / 12Gb; 14.7 / 23.3Gb กระทำ; จพู 491mb; สระว่ายน้ำ 145mb np นี่เป็นกระบวนการ 146 ชุด, จพูสูงสุด 2276k max np pool 263k ขนาดการส่งมอบที่ใหญ่ที่สุด 696,396k และสำหรับกระบวนการเดียวกัน WS คือ 714,256k (กระบวนการแท็บ Opera) (จำนวนกระบวนการที่สูงของฉันเกิดจากเว็บเบราว์เซอร์ ... พวกเขาแยกแท็บผ่านกระบวนการในวันนี้ ... เปิดหลายสิบในครั้งเดียวดังนั้นกระบวนการเพิ่มเติมหลายสิบ)
jrista

12

ฉันจะทราบได้อย่างไรว่าเหตุใด Windows ของฉันจึงใช้ RAM มาก

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

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

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


12
หากระบบ windows7 ของฉันใช้ ram ขนาด 3gb เมื่อเริ่มต้นโดยไม่มีแอปพลิเคชันที่เปิดอยู่สิ่งที่ต้องทำผิดพลาด
Vader

5
@JebediahKerman ทำไมคุณถึงพูดอย่างนั้น? ฉันใช้ความพยายามในการพยายามอธิบายให้คุณทราบว่าทำไมถึงไม่เป็นเช่นนั้นและทำไม Windows จึงออกแบบมาให้ทำเช่นนั้น คุณไม่เข้าใจคำอธิบายของฉันหรือไม่ หรือถ้าคุณไม่เห็นด้วยคุณช่วยอธิบายได้ไหมว่าคุณคิดว่าฉันผิด
David Schwartz

11
@DavidSchwartz คำตอบที่ผิดโดยสิ้นเชิง เขามีหน่วยความจำรั่วโดยไดรเวอร์
magicandre1981

9
@DavidSchwartz: พฤติกรรมที่คุณอธิบาย (การจัดสรร RAM ที่สามารถนำกลับมาใช้ใหม่) ต้องทำจากหน่วยความจำที่สามารถเพจได้ รูปที่น่ากังวลคือ 1.3 GB ของหน่วยความจำแบบไม่มีเพจ คุณไม่สามารถปล่อยให้เป็นอิสระสำหรับทรัพยากรอื่น ๆ 1.3 GBbyte เหล่านั้นจะไปไหน การเป็น "nonpaged" หมายความว่า ownser กล่าวว่า "ไบต์เหล่านี้มีความสำคัญดังนั้นคุณไม่สามารถแม้แต่วางมันลงบนดิสก์
MSalters

25
ทำไมคำตอบนี้ถึงสูงมาก? มันหายไปอย่างสิ้นเชิงจุด โดยไม่คำนึงถึงคำเฉพาะที่ใช้ (ซึ่งชัดเจนชัดเจนในการเริ่มต้นด้วย) คำถามไม่ใช่“Why is Windows using RAM?”คำถามคือ“Why do the RAM usage numbers not add up; why is one part reporting a higher usage than another part?”โพสต์นี้ควรเป็นความคิดเห็นที่ดีที่สุดเพราะไม่ได้ตอบคำถามจริงหรือพยายามตอบ มันจะมีเพียงคำแนะนำเล็กน้อยและคำแนะนำที่ไม่ดีตั้งแต่นั้นถ้าหาก OP ได้เพิกเฉยตามคำแนะนำหน่วยความจำรั่วก็จะไม่ถูกค้นพบ
Synetech

2

เหตุผลที่ไม่ได้กล่าวถึงข้างต้นคือ Hyper-V

ฉันสามารถระบุด้วยโปรแกรมอรรถประโยชน์RamMap ที่ยอดเยี่ยม:

ป้อนคำอธิบายรูปภาพที่นี่

ภาพหน้าจอมาจากหลังจาก ก่อนที่หน่วยความจำ "Driver Locked" มีมากกว่า 6GB RAM มากกว่า 80% ในเครื่องนี้ ฉันต้องเข้าไปที่ Hyper-V Manager และปิดการใช้งาน "Dynamic Memory" อยากรู้อยากเห็นแม้หลังจากเปิดใช้งานอีกครั้งหน่วยความจำ "ไดร์เวอร์ล็อค" อยู่ในระดับต่ำ - ฉันสามารถสันนิษฐานอินสแตนซ์ก่อนเพิ่มขึ้นและ Hyper-V ไม่ลดหน่วยความจำที่จัดสรรโดยอัตโนมัติ:

ป้อนคำอธิบายรูปภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.