سؤال لماذا إجمالي استخدام الذاكرة التي تم الإعلام عنها بواسطة إدارة مهام Windows أعلى بكثير من مجموع استخدام الذاكرة لكافة العمليات؟ [مكرر]


تُظهر إدارة المهام إجمالي استخدامي للذاكرة بنسبة 90٪ من إجمالي 6 غيغابايت ، ولكن لا توجد عملية واحدة تستخدم أكثر من 250 ميغابايت من ذاكرة الوصول العشوائي ، ويبلغ إجمالي استخدام ذاكرة الوصول العشوائي لجميع العمليات قيد التشغيل أقل من 2 غيغابايت. لقد حاولت:

  • بالنظر إلى الأرقام الموجودة في عمود "الذاكرة" في علامة التبويب "العمليات" في Windows 8 Task Manager.
  • الاطلاع على "مجموعة العمل" و "مجموعة العمل الخاصة" و "مجموعة العمل المشتركة" وأعمدة "الالتزام بحجم" في علامة التبويب "التفاصيل" في "إدارة المهام".
  • البحث في الأعمدة ذات الصلة بالذاكرة المشابهة في Process Explorer.
  • لقد حاولت تشغيل Sysinternals RAMMap ، ولكن بينما أواجه أزمة الذاكرة المنخفضة ، فإنه يتعطل عند الإطلاق. بمجرد حل المشكلة ، يعمل RAMMAP بشكل طبيعي ، ولكن عند هذه النقطة يكون قد فات الأوان.

كل عرض كمية صغيرة جدا من الذاكرة المستخدمة.

هناك الكثير من الناس يطلبون صيغ مختلفة من هذا السؤال ، مع إصدارات مختلفة من النوافذ ، في جميع أنحاء الإنترنت. تمكن البعض منهم من حل مشاكل الذاكرة المنخفضة ، في كثير من الأحيان عن طريق إعادة تثبيت البرامج ؛ في بعض الأحيان عن طريق إعادة تثبيت النوافذ من الصفر. أنا أبحث عن إجابة على الأسئلة العامة التي يشترك فيها الجميع ، والتي يبدو أنها لن تحصل على إجابة في أي مكان آخر:

  1. لماذا إجمالي الذاكرة المستخدمة أعلى بكثير من الذاكرة المستخدمة من قبل جميع العمليات المذكورة ، بغض النظر عن كيف أحاول حسابها؟
  2. كيف يمكن لـ windows "معرفة" أن يتم استخدام الذاكرة دون معرفة ما البرنامج الذي يستخدمه؟
  3. ما العمليات التي ربما تستهلك الذاكرة ولكن لا تظهر في القائمة؟
  4. هل هناك أي برامج يمكن أن تقدم المزيد من المعلومات حول الذاكرة المستخدمة؟

تفاصيل محددة لمشكلتي الخاصة: منذ الترقية إلى Windows 8.1 ، تحدث المشكلة بمجرد تسجيل الدخول. نفدت الذاكرة بمجرد تشغيل أي برنامج. لاحظت في عملية Explorer أنه تم تشغيل عدة مثيلات من iexplore.exe ، على ما يبدو بدأت تلقائيا. مثال واحد فقط كان يستخدم بضعة ميغابايت من ذاكرة الوصول العشوائي ، ولكن أظهر مئات الملايين من أخطاء الصفحات. في نزوة ، قتلت هذه العملية المحددة ، وانخفض استخدام الذاكرة على الفور بنسبة 70٪.

مما يؤدي إلى سؤال واحد محدد:

  • كيف يمكن قتل عملية واحدة يفترض أنها استخدمت فقط بضعة ميغابايت خالية من عدة غيغابايت؟

وسؤال مكافأة (يفترض أنه صعب):

  • بدون إعادة تثبيت Windows ، كيف أتمكن من تجنب ذلك في كل مرة أعيد فيها تشغيل جهاز الكمبيوتر الخاص بي؟

79
2018-03-11 02:46


الأصل


أيضا حسابات ذاكرة النواة في الاستخدام. نشر صورة رامما: blogs.technet.com/b/askperf/archive/2010/08/13/... - magicandre1981
أعتقد أن السؤال يجب أن يحمل عنوان "لماذا نفدت الذاكرة". - surfasb
هذا السؤال من المستحيل الإجابة دون تفاصيل. قائمة البرامج المثبتة. أو الأفضل من ذلك ، تفريغ العمليات قيد التشغيل من "مراقبة الأداء". - surfasb
هل تقوم بالفعل بإيقاف / إعادة تشغيل جهاز الكمبيوتر الخاص بك تمامًا أو هل تستخدم إيقاف التشغيل المختلط (افتراضي في Windows 8)؟ بعد التحول إلى نظام التشغيل Windows 8 كان لدي مشكلة مماثلة. أفترض أن أحد السائقين أخذ أكثر وأكثر من ذاكرة الوصول العشوائي الفعلية الخاصة بي ولم يعيدها ، حتى بعد إيقاف تشغيل الكمبيوتر وتشغيله. في غضون بضعة أسابيع تراكمت على عدة غيغابايت. لذلك الآن كل بضعة أيام انقر فوق "إعادة تشغيل" أو اضغط على مفتاح shift أثناء النقر فوق "إيقاف" لإيقاف جهاز الكمبيوتر بالفعل. - Robert
في حالتي كانت الذاكرة "Driver Locked" محجوزة بواسطة Hyper-V بسبب تمكين "Dynamic Memory". اضطررت إلى إيقاف تشغيل جميع أجهزة VM وتعطيل الإعداد وإعادة تشغيلها. شكرا على اقتراح RAMMap. - Dagelf


الأجوبة:


بالمناسبة ، يجب أن تحاول عدم استخدام مصطلح "الذاكرة". يخلق الكثير من الارتباك. إذا كنت تقصد الذاكرة الفعلية ، فقل "الذاكرة الفعلية" أو "ذاكرة الوصول العشوائي". إذا كنت تقصد الذاكرة الظاهرية ، قل ذلك. إذا كنت تقصد دعم متجر ، قل ذلك.

لماذا إجمالي الذاكرة المستخدمة أعلى بكثير من الذاكرة المستخدمة من قبل جميع العمليات المذكورة ، بغض النظر عن كيف أحاول حسابها؟

لأن نظام التشغيل لا تضيع الذاكرة الفعلية (ذاكرة الوصول العشوائي) إلا إذا كان لا يوجد لديه خيار.

كيف يمكن لـ windows "معرفة" أن يتم استخدام الذاكرة دون معرفة ما البرنامج الذي يستخدمه؟

لأنه لا يوجد برنامج يستخدمه. خذ بعين الاعتبار ، على سبيل المثال ، الذاكرة التي تحتوي على التعليمة البرمجية لبرنامج التي إنهاؤها فقط. لا يوجد برنامج يستخدمه. ولكن يتم استخدام هذه الذاكرة ، لأنها ليست مجانية وتحتوي على بيانات قد تكون مفيدة (في حالة تشغيل البرنامج مرة أخرى).

ما هي العمليات التي قد تستهلك الذاكرة ، ولكنها تظهر الآن في القائمة؟

انها لا تستخدم من قبل العمليات.

هل هناك أي برامج يمكن أن تقدم المزيد من المعلومات حول الذاكرة المستخدمة؟

RAMMap تستطيع فعلها.

هناك احتمالان فقط ، يمكن استخدام ذاكرة الوصول العشوائي أو يمكن أن تضيع. من الواضح أن الأول أفضل. يتم إهداء أي ذاكرة حرة إلى الأبد - لا يمكن لجهاز 4GB استخدام 2GB اليوم من أجل استخدام 6GB غدا. إذا كنت تفكر "أريدها مجانية الآن حتى أتمكن من استخدامها في وقت لاحق" ، ننسى ذلك. يمكنك استخدامه الآن و استخدامه في وقت لاحق.

كيف يمكن قتل عملية واحدة يفترض أنها استخدمت فقط بضعة ميغابايت خالية من عدة غيغابايت؟

أنت تنفد على دعم مخزن ، وليس الذاكرة الفعلية. لديك الكثير من الذاكرة الجسدية المجانية ولكن ليس هناك دعم كافٍ لنظام التشغيل للحفاظ على تخصيص الذاكرة الظاهرية التي قد تتطلب دعمًا.

كانت العملية تستخدم فقط بضع ميغابايت من الذاكرة الفعلية ، لكن نظام التشغيل ربما كان عليه حجز عدة جي بي من الذاكرة الظاهرية المدعومة له. على سبيل المثال ، لنفترض أن عملية تقوم بإنشاء مخطط ذاكرة خاص قابل للكتابة لملف 2GB. يجب أن يحتفظ نظام التشغيل بسعة 2 غيغابايت من الذاكرة الظاهرية المدعومة للعملية ، لأنه قد يكتب إلى كل بايت واحد من هذا التعيين. أيضا ، قد لا تكتب أبدا إلى أي منها. هذا هو السبب في أنك تحتاج إلى ملف ترحيل صفحات بحجم جيد.

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


9
2018-03-11 05:23



ملاحظة: أنا أستخدم كلمة "ذاكرة" ليس لأنني لا أعرف الفرق بين ذاكرة الوصول العشوائي و VM ، ولكن لأن جهاز الكمبيوتر الخاص بي لا يخبرني إلا أنه خارج "الذاكرة" دون أن يعطيني أي معلومات على الإطلاق يعني. (أفترض أن ذلك يعني ذاكرة الوصول العشوائي ، للأسباب التي حددتها في التعليق السابق ، لكنني لست متأكداً). أنا أفضل استخدام المفردات الحقيقية (التي يمكنني البحث عنها إذا لزم الأمر) من الاستعارات المالية التفصيلية :) - Josh
-1 لأنه بعد قراءة الإجابة وجميع التعليقات ، لا يزال من غير الواضح لماذا يكون إجمالي الذاكرة المستخدمة أعلى بكثير من الذاكرة المستخدمة في جميع العمليات المدرجة. - Bennett McElwee
هذه المصطلحات ، حيث "تستخدم" الذاكرة على الرغم من عدم استخدام أي برنامج لها ، هي على عكس المعنى الطبيعي للكلمات مثل "مستعملة" و "مجانية" - ربما هي مصطلحات مايكروسوفت ، وليس لك. على أي حال ، لنفترض على سبيل المثال أن 50٪ من ذاكرة الوصول العشوائي مستخدمة حاليًا عن طريق تشغيل البرامج ، و 25٪ لا يستخدمها أي برنامج قيد التشغيل ولكن يحتوي على بيانات قد تكون مفيدة في المستقبل ولكن يمكن التخلص منها أيضًا. لا يؤدي إضافة هذه العناصر وعرض "الذاكرة: 75٪" إلى نقل معلومات مفيدة إلى المستخدم. أعتقد أن هذا هو مصدر التشويش الواسع. - Bennett McElwee
BennettMcElwee لا توجد طريقة جيدة لتقليل استخدام الذاكرة إلى رقم واحد بسيط ، ولكن المستخدمين يصرون على ذلك. وهذا يضع المطورين في وضع غير مريح - حيث يمكنهم توفير رقم ليس مفيدًا دائمًا أو لا يقدم أي رقم. يختار معظم مطوري OS و GUI الخيار الأول - حيث يقدمون عددًا يؤدي إلى الكثير من الارتباك. إذا كان سؤالك هو "هل ستعمل ذاكرة الوصول العشوائي على جعل نظامي يعمل بشكل أفضل" ، فالإجابة هي أنه من الصعب جدًا معرفة ذلك ، حتى بالنسبة للخبراء. - David Schwartz
DavidSchwartz لا يفسر إجابتك مثل هذا ، فإنه ينص ببساطة. هل يمكنك تقديم أي روابط لدعم هذا الادعاء المحدد؟ إنني أفسر "الذاكرة الفعلية XX٪" ليعني أن XX٪ من ذاكرة الوصول العشوائي المثبتة فعليًا مستخدمة حاليًا وغير متوفرة لعمليات أخرى. أعتقد أنه تم التحقق من صحة حقيقة أن ما يزيد عن 90٪ من النظام يصبح عرضة للحجب ، وعندما تحاول التطبيقات تخصيص ذاكرة تتجاوز 100٪ ، فإنها تتعطل تمامًا. من واقع خبرتي ، ليس هذا هو النظام القياسي الذي تعمل فيه معظم الأنظمة. - John Neuhaus