OutOfMemoryException, serileştirilen nesnelerden kaynaklanmaz, bunun yerine XmlSerializer nesnelerinin oluşturulmasının bir sonucudur. Bir XmlSerializer oluşturulduğunda, bir derleme dinamik olarak oluşturulur ve AppDomain'e yüklenir. Bu derlemeler, AppDomain öğesinin kaldırılıncaya kadar çöp toplanamaz, bu durumda da asla. Kullanılan XmlSerializer yapıcısına bağlı olarak, oluşturulan her bir XmlSerializer dinamik olarak yeni bir derleme üretecektir. Zamanla, bu meclisler tüm mevcut hafızayı tüketir.
- Önbellek oluşturup XmlSerializer:
çözümleri bir çift vardır.
- Önbelleğe almayı uygulayan XmlSerializer yapıcısı aşırı yüklerinden birini kullanın. Önbelleğe almayı uygulamayan XmlSerializer (Tür, XmlAttributeOverrides) kullandığınız anlaşılıyor. XmlSerializer (Type) ve XmlSerializer (Type, string) önbelleğe almayı uygular. Ben kullanıyorum iken
Microsoft KB : Memory usage is high when you create several XmlSerializer objects in ASP.NET
Merhaba, benzer sorunla karşı karşıya olan "Yeni XmlSerializer (o.GetType());". Bu soruna yerel makinemde serileştirilmiş çok büyük verilerle bakıyorum, bir bulut sunucusunda barındırılan canlı uygulamada herhangi bir istisna vermiyor. Ancak, seri hale getirilmiş dizeyi geliştirme sırasında daha fazla kullanamıyorum ve test edemiyorum. Önerilere açığım. –