השימוש בזיכרון הוא גבוה בעת יצירת מספר עצמים XmlSerializer ב- ASP.NET

מידע תמיכה פנימית של Microsoft

באג #: 13041 (תחזוקת תוכן)

מאפייני הבעיה

ב- Microsoft ASP.NET, השימוש בזיכרון גדל באופן בלתי צפוי בעת יצירת מספר עצמים XmlSerializer .

הגורם

בעיה זו מתרחשת מאחר הרכבה המכילה שפה ביניים של Microsoft (MSIL) והיא נטען לזיכרון בעת יצירת אובייקט XmlSerializer . ניתן לבטל את הטעינה של ההרכבה ללא ביטול טעינה על תחום היישום שנמצא ב-. לכן, בעת יצירת מספר עצמים XmlSerializer , ייתכן שתבחין השימוש בזיכרון גבוהה באופן בלתי צפוי.

לדוגמה, אם תשתמש הבנאי הבאים כדי ליצור מספר אובייקטים XmlSerializer , בהרכבה דינאמית חדשה נוצרת בכל פעם:

public void XmlSerializer( Type t, Type[] extraTypes)

פתרון

כדי לעקוף בעיה זו של יצירה מחדש של הרכבות דינמיות, השתמש באחת מהשיטות הבאות:

  • יצירת מופע אחד של המחלקה XmlSerializer והצב אותו מופע במטמון באמצעות ממשקי Api של אחסון במטמון. לדוגמה, עבור קובץ ה-. dll בשם HighSchool, הקוד הבא מטמוני מופע אחד של המחלקה 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):

זקוק לעזרה נוספת?

הרחב את הכישורים שלך
סייר בהדרכה
קבל תכונות חדשות לפני כולם
הצטרף למשתתפי Microsoft insider

האם מידע זה היה שימושי?

תודה על המשוב!

תודה על המשוב! נראה שכדאי לקשר אותך לאחד מנציגי התמיכה של Office.

×