ابحث عن Memory Leaks وأصلحها في Windows 11/10

تسرب الذاكرة(Memory Leak) هو وضع غير ملائم للموارد في برنامج كمبيوتر بسبب خلل في تخصيص الذاكرة. يحدث ذلك عندما يظل موقع ذاكرة الوصول العشوائي غير المستخدم غير متاح. لا يجب الخلط بين تسرب الذاكرة وتسرب المساحة ، والذي يشير إلى برنامج يستخدم ذاكرة وصول عشوائي(RAM) أكثر من اللازم. يقال إن تسرب الذاكرة على Windows 11/10/8/7 حدث عندما لا يمكن الوصول إلى الذاكرة على الرغم من عدم استخدامها.

تسرب الذاكرة في نظام التشغيل Windows 11/10

قبل أن تبدأ ، يجب أن تعلم أن تسرب الذاكرة(Memory) هو مشكلة برمجية يجب تصحيحها - على سبيل المثال في Java و JavaScript و C / C ++ و Windows وما إلى ذلك. لا يلزم استبدال ذاكرة الوصول العشوائي(RAM) أو القرص الثابت فعليًا.

تسرب الذاكرة في نظام التشغيل Windows 10

لماذا هو سيء

من الواضح أن تسرب الذاكرة أمر سيء لأنه خطأ ، وخلل في النظام. لكن دعنا نتعرف على كيفية تأثيره بالضبط على النظام:

  1. نظرًا لعدم تحرير الذاكرة حتى في حالة عدم استخدامها ، يؤدي ذلك إلى استنفاد الذاكرة.
  2. يؤدي استنفاد الذاكرة إلى شيخوخة البرامج.
  3. يؤدي تقليل الذاكرة المتوفرة إلى زيادة وقت الاستجابة وضعف أداء النظام.
  4. يمكن أن يؤدي تسرب الذاكرة الذي لم يتم التحقق منه في النهاية إلى تعطل أحد التطبيقات.

لتحديد تسرب الذاكرة ، يحتاج المبرمج إلى الوصول إلى الكود المصدري للبرنامج.

تحديد مكان التسرب

لحل مشكلة ما ، علينا تحديدها أولاً. الخطوات الأساسية لتحديد موقع تسرب للذاكرة هي:

  1. تأكيد(Affirmation) : تحديد ما إذا كان قد حدث تسرب أم لا.
  2. البحث عن تسرب للذاكرة في وضع Kernel(Finding Kernel-mode memory leak) : تحديد موقع تسرب ناتج عن مكون برنامج تشغيل وضع kernel.
  3. البحث عن تسرب للذاكرة في وضع المستخدم(Finding User-mode memory leak) : تحديد موقع تسرب ناتج عن برنامج تشغيل أو تطبيق في وضع المستخدم.

تخصيص الذاكرة

هناك أوضاع مختلفة تخصص فيها التطبيقات ذاكرة الوصول العشوائي(RAM) . إذا لم يتم تحرير المساحة بعد الاستخدام ، فسيحدث تسرب للذاكرة بغض النظر عن وضع التخصيص. بعض أنماط التخصيص الشائعة هي:

  1. وظيفة HealAlloc(HealAlloc) لتخصيص ذاكرة الكومة. معادلات وقت تشغيل C / C ++ هي malloc والجديدة.
  2. وظيفة VirtualAlloc(VirtualAlloc) للتخصيص المباشر من نظام التشغيل.
  3. Kernel32 APIs للاحتفاظ بذاكرة kernel للتطبيق. مثال(Example) ، CreateFile ، CreateThread .
  4. واجهات برمجة تطبيقات User32 و Gdi32 APIs.

منع تسرب الذاكرة في Windows

نعلم جميعًا أن الوقاية خير من العلاج ، لذا إليك بعض الطرق لمنع تسرب الذاكرة.

عادات المراقبة

تسرب الذاكرة في نظام التشغيل Windows 10

تحتاج إلى مراقبة الاستخدام غير الطبيعي لذاكرة الوصول العشوائي(RAM) بواسطة البرامج والتطبيقات الفردية. يمكنك الانتقال إلى Windows Task Manager بالضغط على CTRL+SHIFT+ESC وإضافة الأعمدة مثل المقابض وكائنات(Handles) المستخدم وكائنات(User Objects) GDI وما(GDI Objects) إلى ذلك.

سيساعدك هذا على مراقبة استخدام الموارد بسهولة.

قراءة(Read) : ما هي أنواع الذاكرة في الكمبيوتر؟(What are the Types of Memory in a computer?)

أدوات Microsoft(Microsoft) لتشخيص تسرب الذاكرة

تعمل الأدوات المختلفة على تشخيص تسرب الذاكرة لأنماط التخصيص المختلفة:

  1. تقوم أداة التحقق من التطبيق(Application Verifier) بتشخيص تسريبات الكومة.
  2. يقوم UMDH(UMDH) (أحد مكونات Windows Debugging Tools ) بتشخيص التسريبات للعمليات الفردية من خلال مراقبة عمليات تخصيص ذاكرة الكومة.
  3. تتبع Capture لتحليل شامل لاستخدام ذاكرة الوصول العشوائي .(RAM)
  4. يتتبع Xperf أيضًا أنماط تخصيص الكومة.
  5. لا يقتصر دور كومة تصحيح CRT(CRT Debug Heap) على عمليات تخصيص الكومة فحسب ، بل تتيح أيضًا ممارسات الترميز لتقليل التسريبات.
  6. JavaScript Memory Leak Detector يصحح تسرب الذاكرة في الرموز.

نصائح الاستخدام

  1. استخدم kernel HANDLE s والمؤشرات الذكية الأخرى لموارد Win32 وتخصيصات الكومة.
  2. احصل على(Get) فئات لإدارة الموارد التلقائية لتخصيصات kernel من مكتبة ATL . يحتوي معيار C ++ على auto_ptr لتخصيصات(auto_ptr ) الكومة.
  3. قم بتغليف مؤشرات واجهة COM(Encapsulate COM) داخل "المؤشرات الذكية" بمساعدة _com_ptr_t أو _bstr_t أو _variant_t .
  4. مراقبة(Monitor) كود .NET للاستخدام غير الطبيعي للذاكرة.
  5. تجنب(Avoid) مسارات الخروج المتعددة للوظائف للسماح بتحرير التخصيصات من المتغيرات في معظم الكتل بنهاية الوظيفة.
  6. استخدم(Use) الاستثناءات الأصلية فقط بعد تحرير كافة التخصيصات في الكتلة _finally . قم بلف(Wrap) كل الكومة ومعالجة التخصيصات في المؤشرات الذكية من أجل استخدام استثناءات C ++.
  7. قم دائمًا باستدعاء الوظيفة PropVariantClear قبل إعادة تهيئة كائن PROPVARIANT أو تجاهله .

استكشاف مشاكل(Troubleshoot) تسرب الذاكرة في Windows وإصلاحها(Windows)

تمامًا مثل الطرق المختلفة لمنع تسرب الذاكرة ، توجد طرق مختلفة لإيقاف تسرب الذاكرة. ولكن قبل أن تبدأ ، تذكر إنشاء نقطة استعادة للنظام أولاً .

1] أغلق العمليات وأعد تشغيلها.

إذا رأيت أن هناك عملية غير ضرورية تستهلك الكثير من ذاكرة الوصول العشوائي(RAM) ، يمكنك إنهاء العملية في إدارة المهام(Task Manager) . ستحتاج إلى إعادة تشغيل الجهاز حتى تكون المساحة الخالية متاحة للاستخدام من قبل العمليات الأخرى. بدون مشكلة تسرب ذاكرة إعادة التشغيل(Restart) لن يتم حلها. إحدى العمليات المحددة التي تحتوي على أخطاء لإبطاء جهاز الكمبيوتر هي Runtime Broker . حاول إذا كان تعطيل ذلك وحده يعمل.

2] أدوات تشخيص الذاكرة

تشخيصات ذاكرة Windows

للوصول إلى أداة تشخيص الذاكرة المدمجة(Memory Diagnostic Tool) لنظام التشغيل Windows:

  1. احفظ كل عملك المهم.
  2. اضغط على Win + R لفتح نافذة Run .
  3. اكتب الأمر mdsched.exe في نافذة التشغيل(Run) .
  4. أعد تشغيل الكمبيوتر.
  5. بعد إعادة التشغيل ، قم بإجراء فحص أساسي أو انتقل إلى الخيارات " المتقدمة " مثل " (Advanced)مزيج الاختبار(Test mix) " أو " عدد النجاح(Pass count) ".
  6. اضغط على F10 لبدء الاختبار.

هذه لا تزال إصلاحات مؤقتة.

3] تحقق من وجود تحديثات السائق

تحديث برنامج التشغيل

تتسبب برامج التشغيل القديمة في حدوث تسرب للذاكرة. حافظ على تحديث كافة برامج التشغيل :

  1. اضغط على Win + R وافتح نافذة Run . اكتب devmgmt.msc واضغط على Enter . سينقلك إلى إدارة الأجهزة(Device Manager) .
  2. تحقق(Check) من وجود برامج تشغيل قديمة وقم بتحديثها جميعًا.
  3. للحصول على التحديثات ، ربما فاتتك ، تحقق من Windows Update .

كان هذا بسيطًا.

4] تحسين الأداء

ضبط للحصول على أفضل أداء

سيؤدي ضبط Windows للأداء إلى إدارة كل شيء بما في ذلك جدولة المعالج واستخدام الذاكرة لإيقاف تسرب الذاكرة. اتبع هذه الخطوات:

  1. انقر بزر الماوس الأيمن فوق " هذا الكمبيوتر الشخصي(This PC) " وحدد إعدادات " متقدمة(Advanced) " في الجزء الأيمن.
  2. ضمن علامة التبويب " خيارات متقدمة(Advanced) " ، انتقل إلى " الأداء(Performance) " ، متبوعًا بـ " الإعدادات(Settings) ".
  3. حدد " الضبط للحصول على أفضل أداء(Adjust for best performance) " وانقر فوق " موافق(OK) " .
  4. أعد التشغيل(Restart) وتحقق من حل المشكلة.

إذا لم ينجح هذا الحل البسيط ، فجرّب الحل التالي.

5] تعطيل البرامج(Programs) التي تعمل عند بدء التشغيل(Startup)

برامج بدء التشغيل

يعد تعطيل البرامج المزعجة هو الطريقة الوحيدة للتخلص من مشكلة تسرب الذاكرة. انتقل إلى مدير المهام(Task Manager) وقم بتعطيل برنامج إثارة المشاكل. إذا كنت لا تعرف البرامج التي تسبب المشكلة ، فقم بما يلي:

  1. انتقل إلى " مدير المهام(Task Manager) ".
  2. انتقل إلى " بدء التشغيل(Startup) ".
  3. قم بتعطيل برامج بدء التشغيل(Disable the startup programs) التي لا تحتاج إلى تشغيلها افتراضيًا.

6] Defrag القرص الصلب

تجزئة القرص

على الرغم من أن Windows 10 يقوم بذلك تلقائيًا ، فقد تحتاج إلى إلغاء تجزئة محركات الأقراص الثابتة من حين لآخر لتحسين الأداء:

  1. انتقل إلى " هذا الكمبيوتر الشخصي(This PC) " أو " جهاز الكمبيوتر(My Computer) ".
  2. انقر بزر الماوس الأيمن فوق(Right-Click) محرك الأقراص الثابتة للنظام (عادةً ما يكون محرك الأقراص C:).
  3. انتقل إلى " أدوات(Tools) " ضمن " خصائص(Properties) " وحدد " تحسين(Optimize) ".
  4. حدد محرك الأقراص لإلغاء التجزئة وحدد " تحليل(Analyze) ".

أعد تشغيل الكمبيوتر بعد التجزئة الجديدة.

7] ملف ClearPage عند الاغلاق

لقد أصبح الأمر معقدًا الآن - لكن لا تقلق. فيما يلي كيفية مسح ملف الصفحة عند كل إيقاف تشغيل(clear the Page File at every shutdown) :

  • اكتب regedit في البحث(Search) لتشغيل محرر التسجيل(Registry Editor) .
  • أدخل هذا المسار:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
  • غيّر قيمة ClearPageFileAtShutDown إلى '1'.( ClearPageFileAtShutDown to ‘1’.)
  • احفظ التغييرات وأعد تشغيل(Restart) الجهاز.

هذا يجب أن يفعل ذلك. تذكر أن عملية إيقاف التشغيل الخاصة بك ستستغرق وقتًا أطول قليلاً.

9] تعطيل Superfetch

تعمل خدمة Windows(Windows Service) هذه على تحسين الأداء عن طريق تقليل وقت التمهيد. يتيح لـ Windows(Windows) إدارة استخدام ذاكرة الوصول العشوائي(RAM) . الحياة(Life) بعد تعطيل Superfetch ليست مريحة ولكن افعلها إذا لزم الأمر. على الأقل جرب هذا بمفردك لعزل المشكلة:

  1. ابحث عن services.msc وانتقل إلى مدير الخدمات.
  2. ابحث عن " Superfetch " وانقر عليه بزر الماوس الأيمن للانتقال إلى " خصائص(Properties) ".
  3. حدد " إيقاف(Stop) ".
  4. أيضًا " تعطيل(Disable) " الخدمة من القائمة المنسدلة.
  5. أعد تشغيل الكمبيوتر وتحقق مما إذا كان الأداء قد تحسن.

قم بتمكين Superfetch إذا لم ينجح هذا.

10] تحقق من وجود برامج ضارة

استخدم برنامج مكافحة فيروسات تابعًا لجهة خارجية أو برنامج Windows Defender الداخلي الخاص بنظام التشغيل Windows 10 لمسح البرامج الضارة والقضاء عليها. تأكد(Make) من تحديث برنامج مكافحة الفيروسات لدعم نظام التشغيل الخاص بك حتى لا يصبح سبب تسرب الذاكرة.

كل حل قد تحتاجه للعثور على أو منع تسرب الذاكرة موجود هنا. يمكنك قراءة المزيد حول تسرب الذاكرة على MSDN و Microsoft .



About the author

أنا مسؤول Windows 10 و Windows 11/10 ذو خبرة ولدي بعض الخبرة في Edge. لدي ثروة من المعرفة والخبرة لأقدمها في هذا المجال ، ولهذا السبب أعتقد أن مهاراتي ستكون رصيدًا قيمًا لشركتك. تمنحني سنوات خبرتي في كل من Windows 10 و Edge القدرة على تعلم التقنيات الجديدة بسرعة وحل المشكلات بسرعة وتحمل المسؤولية عندما يتعلق الأمر بإدارة عملك. بالإضافة إلى ذلك ، فإن تجربتي مع Windows 10 و Edge تجعلني على دراية كبيرة بجميع جوانب نظام التشغيل ، مما سيكون مفيدًا لإدارة الخوادم أو إدارة تطبيقات البرامج.



Related posts