FIX: تسرب الذاكرة عند طرح استثناءات من كتل استثناء متداخل

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

اضغط هنا لرابط المقالة باللغة الانجليزية810178
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
الأعراض
عندما يتم طرح خطأ استثناء من عبارة catch ، سيتم حدوث تسرب الكائن الاستثناء الأول.

على سبيل المثال، عند حدوث خطأ أثناء تشغيل البرنامج قد تحتاج إلى استخدام عبارة catch حاول لمعالجة الاستثناء. ومع ذلك، إذا يطرح التعليمات البرمجية التي تعالج الاستثناء في عبارة catch استثناء آخر, سيتم عدم حذف الكائن الاستثناء الأول بواسطة أداة تجميع مجمعي البيانات المهملة .NET Framework. يؤدي حدوث تسرب للذاكرة في عملية الاستدعاء.
الحل
يتوفر الآن إصلاح معتمد من Microsoft ولكن الغرض منه هو حل المشكلة الموضحة في هذه المقالة فقط. تطبيقه فقط على أجهزة الكمبيوتر التي تواجه هذه المشكلة بالتحديد. قد يتم إجراء اختبارات إضافية على هذا الإصلاح. ولذلك، إذا لم يكن تأثير هذه المشكلة كبيرًا، توصي Microsoft بالانتظار حتى الإصدار التالي من حزمة خدمة .NET Framework والذي يحتوي على هذا الإصلاح.

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

إصدار اللغة الإنجليزية من هذا الإصلاح سمات الملف (أو الأحدث) المسرودة في الجدول التالي. يتم سرد التواريخ والأوقات الخاصة بهذه الملفات بالتوقيت العالمي coordinated (UTC). عندما تقوم بعرض معلومات الملف، يتم تحويلها إلى التوقيت المحلي. لمعرفة الفرق بين التوقيت العالمي (UTC) والتوقيت المحلي، استخدم علامة التبويب المنطقة الزمنية في أداة التاريخ والوقت في "لوحة التحكم".
   Date         Time   Version       Size       File name   --------------------------------------------------------------   16-Nov-2002  04:05  1.0.3705.378     69,632  Corperfmonext.dll   16-Nov-2002  14:28  1.0.3705.378  1,953,792  Mscorlib.dll   16-Nov-2002  03:56                   10,272  Mscorlib.ldo   16-Nov-2002  04:04  1.0.3705.378  2,269,184  Mscorsvr.dll   16-Nov-2002  04:04  1.0.3705.378  2,269,184  Mscorwks.dll

معلومات أخرى

خطوات إعادة إنشاء في سلوك

ملاحظة التالي هو الحد الأدنى المعلومات المتعلقة إلى عرض المشكلة الموضحة في هذه المقالة.

إعادة إنشاء المشكلة ، تتضمن التعليمات البرمجية التالية في مشروع Visual C# .NET ثم قم بتشغيل عليه مباشرةً (وليس في IDE أو في أي مصحح الأخطاء الأخرى):
for (;;){	try	{		throw new System.Exception("I leak.");	}	catch	{		try		{			throw new System.Exception("I do not leak.");		}		catch		{		}	}	Console.Write("Press ENTER to iterate.");	Console.ReadLine();}
ستلاحظ هذه التعليمة البرمجية عمليات تسرب 2 مقابض تجميع البيانات المهملة كل تكرار.

يمكنك مراقبة هذا السلوك بواسطة النظر إلى العدادات PerfMon التالية:
  • الذاكرة CLR .NET - #Bytes في كافة Heaps ستزيد لكل التكرار
  • CLR .NET الذاكرة - مقابض # GC سيتم زيادة 2 في التكرار
للحصول على معلومات إضافية حول كيفية استخدام PerfMon انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف لـ Microsoft:
248345كيفية إنشاء سجل استخدام مراقب النظام في Windows 2000
تصريح
أقرت Microsoft أن هذه مشكلة في منتجات Microsoft المسردة في بداية هذه المقالة.

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 810178 - آخر مراجعة: 02/13/2014 06:26:30 - المراجعة: 2.4

Microsoft .NET Framework 1.0 Service Pack 2

  • kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbnetframe100presp3fix kbfix kbbug KB810178 KbMtar
تعليقات