سؤال

أرغب في استخدام شيء مثل ملفات تعريف CLR على .Net 2.0 لمعرفة الكائنات التي تشغل مساحة أكبر في الكومة في أي وقت (في عملية عاملة لـ ASP.Net).

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

أيه أفكار؟

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

المحلول

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

تحديد تسرب الذاكرة بسهولة عن طريق جمع ومقارنة لقطات من ذاكرة .NET

أعتقد أن هذا هو ما تبحث عنه.

نصائح أخرى

  • إرفاق المصحح

سي دي بي -ص

  • تحميل ملحقات مصحح أخطاء .net

.loadby sos mscorwks

  • قم بتفريغ الكومة بتنسيق يفهمه CLRProfiler

!TraverseHeap heap.txt

  • فصل المصحح

ق.د

  • قم بتحميل heap.txt في تطبيق clrprofiler

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

هل نظرت إلى RedGates .NET Profiler؟

لقد مر وقت طويل منذ أن استخدمته، لكنني متأكد من أنه يمكنك إرفاقه بأي عملية CLR في أي وقت.

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