สำนักงาน

การรั่วไหลของหน่วยความจำใน Windows เป็นปัญหาที่ผู้ใช้ต้องเจอ เรียนรู้วิธีการตรวจสอบค้นหาหลีกเลี่ยงการแก้ไขการรั่วไหลของหน่วยความจำใน Windows ในขณะที่ยากอาจช่วยได้ 2-3 ขั้นตอน

เวก้าผับ ฉบับพิเศษ

เวก้าผับ ฉบับพิเศษ

สารบัญ:

Anonim

การรั่วไหลของหน่วยความจำ เป็นการใส่ทรัพยากรในโปรแกรมคอมพิวเตอร์เนื่องจากมีการจัดสรรหน่วยความจำผิดพลาด เกิดขึ้นเมื่อสถานที่แรมที่ไม่ใช้งานยังไม่ได้อาคิโอะ หน่วยความจำรั่วไม่ควรสับสนกับการรั่วไหลของพื้นที่ซึ่งหมายถึงโปรแกรมที่ใช้แรมมากกว่าที่จำเป็น หน่วยความจำรั่วไหลในระบบ Windows 10/8/7 เกิดขึ้นเมื่อหน่วยความจำไม่สามารถเข้าถึงได้แม้จะไม่ได้ใช้งาน การรั่วไหลของหน่วยความจำใน Windows 10

ก่อนที่คุณจะเริ่มต้นคุณควรทราบด้วยว่า การรั่วไหลของหน่วยความจำเป็นปัญหาเกี่ยวกับซอฟต์แวร์เพื่อแก้ปัญหา - ตัวอย่างเช่นใน Java, JavaScript, C / C ++, Windows ฯลฯ ไม่จำเป็นต้องเปลี่ยนแรมหรือฮาร์ดดิสก์เป็นจริงเป็นจัง

เหตุใดจึงไม่ดี

เห็นได้ชัดว่าหน่วยความจำ รั่วไหลไม่ดีเพราะเป็นข้อผิดพลาดข้อบกพร่องในระบบ แต่เรามาดูกันว่ามันมีผลต่อระบบอย่างไร:

เนื่องจากหน่วยความจำไม่ได้ถูกปลดปล่อยแม้ว่าจะไม่ได้ใช้งาน แต่ก็ส่งผลให้หน่วยความจำหมดลง

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

การค้นหาการรั่วไหล

ในการแก้ปัญหาเราจำเป็นต้องระบุปัญหาก่อน ขั้นตอนพื้นฐานในการค้นหาตำแหน่งหน่วยความจำรั่วคือ

การยืนยัน

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

ฟังก์ชัน HealAlloc สำหรับการจัดสรรหน่วยความจำฮีป คอมโพเนนต์ C / C + + runtime คือ malloc และใหม่

ฟังก์ชัน VirtualAlloc สำหรับการจัดสรรโดยตรงจาก OS

  1. Kernel32 APIs เพื่อเก็บหน่วยความจำเคอร์เนลสำหรับแอ็พพลิเคชัน ตัวอย่างเช่น CreateFile, CreateThread
  2. User32 APIs และ Gdi32 APIs
  3. การป้องกันการรั่วไหลของหน่วยความจำ
  4. เรารู้ดีว่าการป้องกันทำได้ดีกว่าการรักษาดังนั้นนี่คือวิธีป้องกันการรั่วไหลของหน่วยความจำ

นิสัยการตรวจสอบ

คุณต้องระวังการใช้แรมผิดปกติโดยโปรแกรมและโปรแกรมแต่ละตัว คุณสามารถไปที่ Windows Task Manager ได้โดยการกด

CTRL + SHIFT + ESC

และเพิ่มคอลัมน์เช่น Handles, User Objects, GDI Objects ฯลฯ ซึ่งจะช่วยให้คุณสามารถตรวจสอบการใช้ทรัพยากรได้อย่างรวดเร็ว เครื่องมือตรวจวินิจฉัยการรั่วไหลของหน่วยความจำ

เครื่องมือตรวจวินิจฉัยการรั่วไหลของหน่วยความจำ

UMDH (ส่วนประกอบของ Windows Debugging Tools) จะวิเคราะห์การรั่วไหลของโพรเซสโดยการตรวจสอบการจัดสรรหน่วยความจำฮีป

Trace Capture สำหรับการวิเคราะห์การใช้ RAM อย่างละเอียด

  1. Xperf ยังติดตามรูปแบบการจัดสรรฮีป
  2. CRT Debug Heap ไม่เพียง แต่ติดตามการจัดสรร heap แต่ยังช่วยให้การเข้ารหัสสามารถลดการรั่วไหลได้ด้วย
  3. ตรวจจับการรั่วไหลของหน่วยความจำในรหัส
  4. เคล็ดลับการใช้
  5. ใช้เคอร์เนล
  6. HANDLE

และตัวชี้สมาร์ทอื่น ๆ สำหรับทรัพยากร Win32 และการจัดสรรฮีป

  1. รับชั้นเรียนสำหรับการจัดการทรัพยากรโดยอัตโนมัติสำหรับการจัดสรรเคอร์เนลจาก ไลบรารี ATL มาตรฐาน C ++ มี auto_ptr สำหรับการปันส่วนฮีป
  2. ตัวชี้อินเทอร์เฟซ Encapsulate COM ภายใน "สมาร์ทพอยน์เตอร์" โดยใช้ _com_ptr_t หรือ
  3. _bstr_t หรือ _variant_tตรวจสอบรหัส NET สำหรับการใช้งานหน่วยความจำที่ผิดปกติ หลีกเลี่ยงทางออกหลายทางสำหรับฟังก์ชันเพื่อให้การปันส่วนถูกปลดปล่อยจากตัวแปรในบล็อคส่วนใหญ่เมื่อสิ้นสุดการทำงาน ใช้ข้อยกเว้นแบบเนทีฟเท่านั้น หลังจากพ้นการจัดสรรทั้งหมดในบล็อก _finally ห่อกองทั้งหมดและจัดการการปันส่วนเป็นสมาร์ทพอยน์เตอร์เพื่อใช้ข้อยกเว้น C ++
  4. เรียกใช้ฟังก์ชัน
  5. PropVariantClear
  6. ก่อนที่จะเริ่มต้นใหม่หรือทิ้งวัตถุ PROPVARIANT
  7. การแก้ปัญหาการรั่วไหลของหน่วยความจำใน Windows เช่นเดียวกับวิธีต่างๆในการป้องกันการรั่วไหลของหน่วยความจำมีวิธีต่างๆในการยับยั้งการรั่วไหลของหน่วยความจำ 1] ปิดกระบวนการและรีสตาร์ท

ถ้าคุณเห็นกระบวนการที่ไม่จำเป็นใช้เวลามากเกินไป RAM คุณสามารถจบกระบวนการใน Task Manager คุณจะต้องรีสตาร์ทอุปกรณ์เพื่อให้พื้นที่ว่างสำหรับการใช้งานโดยกระบวนการอื่น ๆ หากไม่มีปัญหารั่วไหลของหน่วยความจำใหม่จะไม่สามารถแก้ไขได้ กระบวนการเฉพาะอย่างหนึ่งที่มีข้อบกพร่องในการชะลอตัวพีซีคือ Runtime Broker ลองใช้งานหากต้องการปิดใช้งานอุปกรณ์แบบแยกตัว

2> เครื่องมือวินิจฉัยความจำ

การเข้าถึงเครื่องมือวินิจฉัยหน่วยความจำภายในสำหรับ Windows:

บันทึกงานสำคัญทั้งหมดของคุณ

กด

Win + R

  1. เพื่อเปิดหน้าต่าง
  2. Runพิมพ์คำสั่ง mdsched.exe ในหน้าต่าง
  3. Runรีสตาร์ทเครื่องคอมพิวเตอร์ หลังจาก " Advanced
  4. `เช่น`
  5. Test mix `หรือ` Pass count ` กด F10 เพื่อเริ่มทำการทดสอบ
  6. เหล่านี้ยังคงมีการแก้ไขชั่วคราว 3> ตรวจหาโปรแกรมควบคุมอัพเดต ไดรเวอร์ที่ล้าสมัยทำให้เกิดการรั่วไหลของหน่วยความจำ อัพเดตไดรเวอร์ทั้งหมด:

กด

Win + R

และเปิดหน้าต่าง

  1. เรียกใช้ พิมพ์ devmgmt.msc และกด Enter มันจะพาคุณไปที่ Device Managerตรวจหาไดรเวอร์ที่ล้าสมัยและอัพเดตทั้งหมด สำหรับการอัพเดทที่คุณอาจพลาดกรุณาตรวจสอบจาก Windows Update นี่ง่าย
  2. 4> ประสิทธิภาพการทำงานที่เพิ่มประสิทธิภาพ
  3. การปรับ Windows เพื่อประสิทธิภาพจะจัดการทุกอย่างรวมถึงการจัดตารางเวลาของโปรเซสเซอร์และการใช้หน่วยความจำเพื่อยับยั้งการรั่วไหลของหน่วยความจำ ทำตามขั้นตอนต่อไปนี้

คลิกขวาที่

พีซีนี้

และเลือกการตั้งค่า

  1. ขั้นสูง ในบานหน้าต่างด้านซ้าย ภายใต้ ขั้นสูง
  2. ตามด้วย การตั้งค่า `เลือก` ปรับค่าประสิทธิภาพที่ดีที่สุด `และคลิก
  3. ตกลงเริ่มต้นใหม่และตรวจสอบว่าปัญหาได้รับการแก้ไขแล้วหรือไม่ หากไม่สามารถแก้ไขปัญหาได้ให้ลองแก้ไขปัญหาถัดไป 5> ปิดการใช้งานโปรแกรมที่เริ่มต้นใช้งาน
  4. การปิดใช้งานโปรแกรมที่เป็นปัญหา วิธีเดียวที่จะกำจัดปัญหาการรั่วไหลของหน่วยความจำ ไปที่ Task Manager และปิดใช้งานโปรแกรม troublemaking ถ้าคุณไม่ทราบว่าโปรแกรมใดสร้างปัญหาให้ทำดังนี้:

ไปที่

Task Manager

`

  1. ไปที่ Startup
  2. ปิดใช้งานโปรแกรมเริ่มต้นที่คุณไม่จำเป็นต้องเรียกใช้ตามค่าเริ่มต้น 6> Defrag Hard Drive แม้ว่า Windows 10 จะทำเช่นนี้ให้คุณโดยอัตโนมัติคุณอาจจำเป็นต้องทำ Defrag ฮาร์ดไดรฟ์เป็นครั้งคราวเพื่อเพิ่มประสิทธิภาพการทำงาน:
  3. ไปที่

PC นี้

หรือ

  1. My Computer ` คลิกขวาที่ฮาร์ดไดรฟ์ของระบบ (โดยปกติคือ C: drive) ไปที่`
  2. `เลือก
  3. เพิ่มประสิทธิภาพ ` เลือกไดรฟ์เพื่อ defrag และเลือก ` Analyze ``ภายใต้ < > รีสตาร์ทเครื่องคอมพิวเตอร์หลังจากการกระจายตัวใหม่
  4. 7] ClearPage File at shutdown ตอนนี้กำลังกลายเป็นเรื่องยุ่งยากแล้ว แต่ไม่ต้องกังวล ต่อไปนี้คือวิธีการล้างไฟล์ Page เมื่อปิดเครื่องทุกครั้ง: พิมพ์

regedit

ใน Search เพื่อเปิด Registry Editor

ใส่เส้นทางนี้:

  1. HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management เปลี่ยนค่า ClearPageFileAtShutDown to `1`
  2. บันทึกการเปลี่ยนแปลงและรีสตาร์ทอุปกรณ์ ควรทำเช่นนี้
  3. 9> ปิดการใช้งาน Superfetch บริการ Windows นี้จะเพิ่มประสิทธิภาพโดยลดเวลาการบูต ช่วยให้ Windows สามารถจัดการการใช้ RAM ได้ ชีวิตหลังจากปิดใช้งาน Superfetch ไม่สะดวก แต่ต้องทำถ้าจำเป็น พยายามอย่างน้อยที่สุดเพื่อแยกปัญหา:
  4. ค้นหา

services.msc

และไปที่ Services Manager

ค้นหา `

  1. Superfetch ` และคลิกขวาเพื่อไป ` เลือก
  2. หยุด ` เลือก ` หยุด `
  3. นอกจากนี้ ปิดการใช้งาน `จากเมนูแบบหล่นลง
  4. รีสตาร์ทเครื่องคอมพิวเตอร์และตรวจสอบว่าประสิทธิภาพการทำงานดีขึ้นหรือไม่ เปิดใช้ Superfetch ถ้าไม่ได้ผล 10] ตรวจหามัลแวร์
  5. ใช้ซอฟต์แวร์ป้องกันไวรัสของ บริษัท อื่นหรือ Windows Defender ในบ้านของ Windows 10 เพื่อสแกนและกำจัดมัลแวร์ ตรวจสอบให้แน่ใจว่าโปรแกรมป้องกันไวรัสได้รับการอัปเดตเพื่อสนับสนุนระบบปฏิบัติการของคุณเพื่อไม่ให้กลายเป็นสาเหตุของการรั่วไหลของหน่วยความจำ

ทุกๆโซลูชันที่คุณอาจต้องการค้นหาหรือป้องกันการรั่วไหลของหน่วยความจำอยู่ที่นี่ คุณสามารถอ่านเพิ่มเติมเกี่ยวกับการรั่วไหลของหน่วยความจำใน MSDN และ Microsoft