Makale numarası: 886385 - Son Gözden Geçirme: 24 Şubat 2012 Cuma - Gözden geçirme: 0.1

ASP'de birçok XmlSerializer nesneleri oluştururken bellek kullanımı yüksektir.NET

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.
Hepsini aç | Hepsini kapa

Belirtiler

Microsoft asp.Birkaç oluşturduğunuzda, net, bellek kullanımı beklenmedik biçimde artıyor XmlSerializer nesneler.

Neden

Bu sorun, Microsoft Intermediate language (MSIL) içeren bir derleme olduğundan ve oluşturulan oluşturduğunuzda, belleğe bir XmlSerializer Nesne. Derleme içinde bulunan uygulama etki alanı kaldırma olmadan kaldıramıyor. Bu nedenle, birkaç oluşturduğunuzda XmlSerializer nesneleri, beklenmedik biçimde yüksek bellek kullanımı görebilirsiniz.

Örneğin birkaç oluşturmak için aşağıdaki Oluşturucu kullanın XmlSerializerher zaman yeni bir Dinamik derleme nesneleri oluşturulur:
public void XmlSerializer( Type t, Type[] extraTypes)

Çözüm

Dinamik derleme yeniden bu soruna geçici bir çözüm için aşağıdaki yöntemlerden birini kullanın:
  • Bir örneği oluşturma XmlSerializer sınıf ve önbellek API kullanarak önbellekte örnek yerine. Örneğin, aşağıdaki kod örneği HighSchool adlı bir .dll dosyası için önbelleğe XmlSerializer sınıf:
    XmlSerializer mySerializer = new XmlSerializer(typeof(HighSchool.MyClass), attrOverrides, extraTypes, root, "http://www.microsoft.com");
    Cache["HighSchoolSerializer"] = mySerializer 
    
    Örneğini kullanın XmlSerializer Önbellek, yenisini oluşturmak yerine koymak sınıfı XmlSerializer Her nesne.
  • Aşağıdaki XmlSerializer sınıf Kurucularını. Bu sınıf Kurucularını derlemeler önbellek:
    İçinde.net Framework sürüm 1.0
     public XmlSerializer(Type);

    İçinde.net Framework sürüm 1.1
    public XmlSerializer(Type type);
    public XmlSerializer(Type type, string defaultNamespace); 
  • Bildirmek XmlSerializer statik üyesi bir sınıf nesnesi.

Referanslar

Hakkında ek bilgi için XmlSerializer sınıf ve yaklaşık XmlSerializer Kurucular sınıfı, aşağıdaki Microsoft Developer Network (msdn) Web sitelerini ziyaret edin:
http://msdn2.microsoft.com/en-us/library/System.XML.Serialization.XmlSerializer (vs.71) .aspx (http://msdn2.microsoft.com/en-us/library/system.xml.serialization.xmlserializer(vs.71).aspx)
http://msdn2.microsoft.com/en-us/library/System.XML.Serialization.xmlserializer_members (vs.71) .aspx (http://msdn2.microsoft.com/en-us/library/system.xml.serialization.xmlserializer_members(vs.71).aspx)

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft .NET Framework 4.0
  • Microsoft .NET Framework 2.0
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
Anahtar Kelimeler: 
kbtshoot kbprb kbmt KB886385 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:886385  (http://support.microsoft.com/kb/886385/en-us/ )