هل يمكنني تشغيل مجموعة البيانات المهملة .NET من WinDbg؟

StackOverflow https://stackoverflow.com/questions/334174

سؤال

أنا أبحث في سبب استخدام العملية المُدارة لمساحة كبيرة من الذاكرة.هل هناك طريقة للتشغيل GC.Collect(3) من WinDbg، حتى أتمكن من التركيز على تخصيص الذاكرة الفعلي؟

هل كانت مفيدة؟

المحلول

لا أعتقد أن هناك أي طريقة لتشغيل مجموعة البيانات المهملة .NET من WinDbg، ولكنني لا أعتقد أيضًا أن ذلك ضروري.

يرى حكايات أداء ريكو مارياني - تعقب تسرب الذاكرة المُدارة (كيفية العثور على تسرب GC) للحصول على معلومات حول معرفة نوع الأشياء الموجودة في كومة الذاكرة المؤقتة الخاصة بك.

روابط إضافية ربما تكون مفيدة:

نصائح أخرى

لا أعتقد أنه يمكنك تشغيل GC من WinDbg.

فيما يلي بعض الأدوات المفيدة التي أصبحت أعتمد عليها لتتبع تخصيص الذاكرة:

  • سوسيكس - امتداد إضافي لـ Windbg لاستكمال SOS الذي يضيف! dumpgen لتفريغ الكائنات من جيل معين (رائع لمعرفة ما هو موجود على Loh و Gen 2) وأمر! Refs الذي سيعطي الحكام الأم لكائن ما .
  • .NET Memory Profiler - هذه أداة مفيدة للغاية عند التشغيل بشكل تفاعلي ولكنها تحتوي أيضًا على خيار للتحميل من ملف تفريغ.هذا يعطي طريقة بديهية بشكل معقول لتتبع استخدام الذاكرة.يستحق سعر 250 دولارًا أمريكيًا بسهولة ولكن لديهم أيضًا تقييم لمدة 14 يومًا.

وWinDBG هو أولا وقبل كل شيء إلى Win32 / نواة المصحح. لذلك قد ترغب في محاولة واحدة من مصححات المدارة، مثل mDBG . ولكن كنت تفعل الدعم. NET التصحيح ل MSFT، ولقد حاجة أبدا أي شيء من هذا القبيل لاستكشاف تسرب الذاكرة.

مرحبًا روجر، نأمل أن يتم حل مشكلة تسرب الذاكرة لديك الآن.:-)

سأتأكد أولاً من أنه "تسرب للذاكرة مُدار".أعني بذلك أنه عندما تنظر إلى عدادات مراقبة الأداء ذاكرة .NET CLR -> # بايت في كافة الأكوام يتزايد بنفس المعدل العملية -> البايتات الخاصة عداد لنفس العملية.إذا كان الأمر كذلك، فيمكنك استخدام التقنيات الموضحة أعلاه.

إذا لم يكن الأمر كذلك، فقد يكون لديك تسرب أصلي نتيجة تشغيل تعليمات برمجية مُدارة.الأكثر شيوعًا الذي رأيته هو ما يتعلق بتحميل تجميعات .NET في العملية وعدم إلغاء تحميلها.يبدو هذا وكأنه تسرب للذاكرة الأصلية في Perfmon.

أود أن أقترح عليك محاولة تشغيل قاعدة التسرب في DebugDiagوشاهد ما يظهره تقرير الذاكرة على أنه مكدسات استدعاء متسربة.

إليك مصدرًا رائعًا آخر حول هذا الموضوع:عندي تسرب للذاكرة !!!ماذا أفعل؟(تحديد "أين")

شكرا يا هارون

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top