2010-05-10 11 views
7

पर मैं एक वेब साइट है कि जब भी यह मेरी कोड में निम्नलिखित जगह पर हो जाता है पर OutOfMemoryExceptions फेंक रहा है , मेरे पास यह क्यों हो रहा है कि इस बारे में जानकारी का एक टन नहीं है। मुझे पता है कि यह ऑब्जेक्ट्स जो क्रमबद्ध है वह कुछ भी गंभीर नहीं है - निश्चित रूप से प्रत्येक एमबी से कम है।नेट OutOfMemoryException XMLSerializer.Serialize

क्या आपके पास यह पहले था? मुझे इस मुद्दे का निदान करने में मदद करने की तरह लग रहा है? किसी भी मदद की सराहना की है।

धन्यवाद!

उत्तर

9

आउटऑफमेमरी एक्सेप्शन धारावाहिक होने वाली वस्तुओं के कारण नहीं होता है, बल्कि इसके बजाय यह XmlSerializer ऑब्जेक्ट्स के निर्माण का परिणाम है। जब XmlSerializer बनाया जाता है, तो एक असेंबली गतिशील रूप से जेनरेट की जाती है और ऐपडोमेन में लोड होती है। इन असेंबली को तब तक कचरा नहीं बनाया जा सकता जब तक कि उनके ऐपडोमेन को उतार नहीं दिया जाता है, जो आपके मामले में कभी नहीं होता है। XmlSerializer कन्स्ट्रक्टर का उपयोग करने के आधार पर, प्रत्येक XmlSerializer का निर्माण गतिशील रूप से एक नई असेंबली उत्पन्न करेगा। समय के साथ, ये असेंबली सभी उपलब्ध स्मृति का उपभोग करेंगे।

  1. कैश XmlSerializer आपके द्वारा बनाए गए:

    समाधान के एक जोड़े हैं।

  2. कैशिंग लागू करने वाले XmlSerializer कन्स्ट्रक्टर ओवरलोड का उपयोग करें। ऐसा लगता है कि आप XmlSerializer (टाइप, XmlAttributeOverrides) का उपयोग कर रहे हैं जो कैशिंग लागू नहीं करता है। XmlSerializer (प्रकार) और XmlSerializer (प्रकार, स्ट्रिंग) कैशिंग लागू करें।

Microsoft KB : Memory usage is high when you create several XmlSerializer objects in ASP.NET

+0

हाय, मैं वही समस्या का सामना करना पड़ गया है, जबकि मैं उपयोग कर रहा हूँ "नए XmlSerializer (o.GetType());"। मुझे अपनी स्थानीय मशीन पर इस मुद्दे का सामना करना पड़ रहा है जिसमें बहुत बड़े डेटा को क्रमबद्ध किया जा रहा है, यह लाइव ऐप पर कोई अपवाद नहीं दे रहा है, जिसे क्लाउड सर्वर पर होस्ट किया जा रहा है। लेकिन मैं विकास के दौरान धारावाहिक स्ट्रिंग का उपयोग और परीक्षण करने में असमर्थ हूं। मैं सुझावों के प्रति उदार हूं। –

0

यदि मुझे थोड़ी देर पहले इसी तरह की समस्याओं से याद आती है, तो XmlSerializer को इसकी प्रक्रिया के डेटा की तुलना में स्मृति की एक टन की आवश्यकता होती है। मुझे यकीन नहीं है कि यह मामला क्यों है।