में वीक संदर्भों को मुक्त नहीं किया गया है मुझे यहां एक अजीब व्यवहार मिला है: मुझे एक डब्लूएलजी एप्लीकेशन चलाने वाले उत्पादन में भारी मेमोरी लीक मिलती है जो एक डीएलओजी-टर्मिनल (विंडोज एम्बेडेड स्टैंडर्ड एसपी 1) पर चलती है जो पूरी तरह से ठीक है मैं इसे सामान्य डेस्कटॉप पर लॉन्ली चलाता हूं (Win7 prof।)कमजोर ओएस
किसी भी समस्या को खोजने के कई असुरक्षित प्रयासों के बाद मैंने सीधे उन लोगों में से एक को अपने मॉनिटर के बगल में रखा, एएनटी मेमोरीप्रोफाइलर स्थापित किया और एक घंटे का टेस्ट रन दोनों पर उपयोगकर्ता संचालन अनुकरण किया टर्मिनल और मेरे विकास पीसी।
परिणाम यह है कि कुछ अजीब कारणों से एम्बेडेड सिस्टम वीक रेफरेंस और प्रभावी वाल्यूएन्ट्री [] ऑब्जेक्ट्स की एक बड़ी मात्रा को ढेर करता है।
विकास (पीसी):
और टर्मिनल:
बस कक्षा सूची देखो ...
यहाँ कुछ तस्वीरें हैं
क्या किसी ने इससे पहले ऐसा कुछ देखा है और इसके समाधान ज्ञात हैं? मुझे सहायता कहाँ मिल सकती है?
(पी एस टर्मिनलों जहां .net4 के लिए तैयार छवियों के साथ स्थापित)
पी पी एस: बंद मतदाता के लिए: मुझे लगता है सवाल स्पष्ट है: मैं इसे ठीक कर सकते हैं। आप तर्क दे सकता है अगर यह एक आईटी/ओएस समस्या बनाम एक प्रोग्रामिंग समस्या है, लेकिन मुझे लगता है कि अगर मैं सर्वर में इस पोस्ट दोष यह कुछ ही समय में एक विषय से हटकर पास मिल जाएगा ...
अद्यतन: मैं समस्या का एक बड़ा हिस्सा खोजने में सक्षम था - लेकिन यह थोड़ा सा लगता है जैसे सी ++: मैं एक डब्ल्यूपीएफ-लिस्ट के लिए व्यूमोडेल-जैसी आइटम क्लास का उपयोग करता हूं जो आईसीओएमएंड (रिलेकॉमैंड-पैटर्न) प्रदान करता है। दृश्यों के लिए व्यूमोडेल-प्रॉपर्टी के गेटटर में फ्लाई पर बनाए गए आइटम और ऐसा लगता है कि एप्लिकेशन/जीसी ने उन अप्रयुक्त आदेशों को कभी भी मुक्त नहीं किया - या उनके CanExecuteChanged के लिए सब्सक्राइबशन - मेमोरी प्रोफाइलर उन्हें " कमजोर संदर्भ "। मैंने अपने कोड को उन आइटम-व्यूमोडल्स का पुन: उपयोग करने के लिए बदल दिया है और अपने निपटान में हर प्रयुक्त गुणों को रद्द/सेट करने के लिए सेट/सेट किया है और जैसा कि मैंने कहा है: उन पुराने C++ दिनों में "हटाएं" जैसा लगता है। इसके ऊपर मैं एक जबरन जीसी का उपयोग करता हूं। हर 30 मिनटों को चुनिए (हाँ मुझे पता है - आपको कभी नहीं करना चाहिए - लेकिन अब तक मुझे कोई अन्य समाधान नहीं मिला है)। इस सेटअप के साथ एप्लिकेशन अब तक समस्याओं के बिना 6+ घंटे तक चलता है लेकिन यह सही नहीं लगता है।
मैं नहीं समझ सकता क्यों उन WeakReferences के रूप में वे मेरे डेस्कटॉप मशीन पर कर रहे हैं दावा नहीं किया जाता ...
इस पर कोई विचार? कृप्या!
अद्यतन: मैं अभी भी इस समस्या को नीचे पिन करने में सक्षम नहीं हूँ, लेकिन मैं एक अजीब व्यवहार देखें: अगर मैं का उपयोग पीसी कहीं भी टर्मिनलों में से एक पर अपने सॉफ़्टवेयर के संचालन का निरीक्षण करने के समस्या दूर हो जाने! 8hr चलने के बाद भी।सीधा सॉफ़्टवेयर चलता है जैसा कि इसे करना चाहिए - यह भी मुफ्त मेमोरी (मैं मुख्य स्क्रीन में थोड़ा मेमोरी काउंटर-डिस्प्ले रखूंगा - मान लें कि मैं टर्मिनल से कनेक्ट हूं और देखता हूं कि मेमोरी कम है - कुछ मिनट प्रतीक्षा करने के बाद मेमोरी पुनः प्राप्त की जाती है)
तो मुझे लगता है कि डेविन (नीचे एक उत्तर) सही दिशा में एक लीड है - रिमोट कंट्रोल सॉफ़्टवेयर में कुछ फाइनेंजर-थ्रेड को अनब्लॉक करता है या जो भी जीसी को अवरुद्ध कर रहा है - चाहे वह अनुरूपित कीबोर्ड/माउस हो या जो भी हो ।
इस पर कोई विचार?
डीबग संलग्न किए बिना डीबीयूटी असेंबली के डीबग बिल्ड को चलाने के साथ यह ज्ञात समस्या है। यह कमजोर संदर्भों को रिसाव करता है जो संपादन + जारी रखने के समर्थन के साथ WithEvents घटनाओं का ट्रैक रखने के लिए स्वतः उत्पन्न होते हैं। इसके अलावा, स्क्रीन शॉट्स से इंजीनियर कोड को रिवर्स करना असंभव है। –
पहला: यह न तो वीबीएनईटी कोड है (यह नहीं कि इससे कोई फर्क नहीं पड़ता) और न ही इसे डीबीयूजी सेट के साथ संकलित किया गया है - इसके ऊपर दोनों ही एक ही प्रोफाइलर के उसी संस्करण से शुरू किए गए डीबगर संलग्न किए बिना चलाए गए थे, लगभग उसी डेटा के साथ एक ही समय में एक ही असेंबली और फाइलें (एक्सकोपीड) - और आपको क्या लगता है कि आप डब्ल्यूपीएफ कोड की कई लाइनों को देख सकते हैं (या आप ** ** सभी ** कोड चाहते हैं - यह कुछ एमबी है टेक्स्ट-फाइल्स ... ओपन-सोर्स बीटीडब्लू नहीं) – Carsten
समस्या के संदर्भ में @ हंसपैसेंट का उल्लेख है (हां, वीबी.नेट यहां मायने रखता है): http://support.microsoft.com/?kbid=919481 – roken