يتم استخدام ذاكرة عالية عندما تقوم بإنشاء عدة كائنات XmlSerializer في ASP.NET


الأعراض


في Microsoft ASP.NET، زيادة استخدام الذاكرة بشكل غير متوقع عندما تقوم بإنشاء عدة كائنات XmlSerializer .

السبب


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

على سبيل المثال، إذا كنت تستخدم الدالة الإنشائية التالية لإنشاء عدة كائنات XmlSerializer ، يتم إنشاء تجميع حيوي جديد كل مرة:
public void XmlSerializer( Type t, Type[] extraTypes)

الحل


لإيجاد حل بديل لهذه المشكلة المتعلقة بإعادة إنشاء التجميعات الحيوية، استخدم إحدى الطرق التالية:
  • إنشاء مثيل من فئة XmlSerializer ، ووضع ذلك المثيل في ذاكرة التخزين المؤقت باستخدام واجهات برمجة تطبيقات التخزين المؤقت. على سبيل المثال، لملف.dll الذي يدعى ثانوية، التعليمات البرمجية التالية وتخزين مثيل واحد من فئة XmlSerializer :
    XmlSerializer mySerializer = new XmlSerializer(typeof(HighSchool.MyClass), attrOverrides, extraTypes, root, "http://www.microsoft.com");
    Cache["HighSchoolSerializer"] = mySerializer
    استخدام مثيل لفئة XmlSerializer وضعه في ذاكرة التخزين المؤقت بدلاً من إنشاء كائن XmlSerializer جديد في كل مرة.
  • استخدام المنشئات XmlSerializer التالية. هذه المنشئات التجميعات في ذاكرة التخزين المؤقت:
    في.NET Framework الإصدار 1.0
     public XmlSerializer(Type);

    في.NET Framework الإصدار 1.1
    public XmlSerializer(Type type);
    public XmlSerializer(Type type, string defaultNamespace); 
  • تعريف الكائن XmlSerializer عضو ثابت فئة.

المراجع


لمزيد من المعلومات حول فئة XmlSerializer والمنشئات XmlSerializer ، قم بزيارة مواقع ويب شبكة مطوري Microsoft (MSDN) التالية: