यदि यह सच है अप्रबंधित स्मृति रिसाव और आप कोड नहीं बदल सकते हैं, तो आप ऐसा कर सकते हैं जो आप कर सकते हैं। ढांचा उस पर नहीं उठा सकता है, न ही यह कोड साफ़ कर सकता है।
इस मामले में दृष्टिकोण उस घटक का अलगाव होगा। इसका मतलब है कि इसे एक्सेस करने में बहुत अधिक ओवरहेड होने जा रहा है, लेकिन ऐसा कुछ भी नहीं है जो आप कर सकते हैं।
आप किसी अन्य एप्लिकेशन डोमेन में कोड नहीं चला सकते हैं, क्योंकि अप्रबंधित कोड में एप्लिकेशन डोमेन की कोई अवधारणा नहीं है।
जो प्रक्रिया स्तर को छोड़ देता है। मैं डब्ल्यूसीएफ में एक सेवा अनुबंध बनाने की सिफारिश करता हूं जो ExternalWidget
पर Shutdown
विधि के साथ कॉल की नकल करता है।
फिर, आप एक EXE तैयार करेंगे जो इस अनुबंध को बेनकाब करेगा (एक सत्र के साथ, ताकि आप ExternalWidget
इंस्टेंस पर रख सकें, जब तक कि प्रत्येक कॉल स्टेटलेस नहीं हो) नामित पाइप बाइंडिंग के माध्यम से।
EXE के पैरामीटर के रूप में, यह एक अद्वितीय पहचानकर्ता (Guid
का उपयोग करें) का उपयोग करेगा और डब्ल्यूसीएफ सेवा के लिए एंडपॉइंट स्थापित करने के हिस्से के रूप में इसका उपयोग करेगा।
फिर, आप कॉल करेंगे, और जब आप ExternalWidget
के उस उदाहरण के साथ किए जाते हैं, तो Shutdown
पर कॉल करें; EXE प्रतीक्षा करना बंद कर देगा और फिर प्रक्रिया बाहर निकल जाएगी, और ऑपरेटिंग सिस्टम स्मृति को पुनः प्राप्त करेगा।
बेशक, विशाल ओवरहेड की मात्रा यहां है, इसलिए यदि आपको लगता है कि आप बहुत सी कॉल कर रहे हैं और कॉल के प्रत्येक सेट के लिए नई प्रक्रिया की आवश्यकता नहीं है, तो आप विचार को एक विस्तार में विस्तारित कर सकते हैं सेवा जो कॉल की गणना करती है और फिर प्रक्रिया को फिर से चलाती है (सेवा को अभी भी खोलना होगा, या संसाधनों से बाहर हो जाएगा) आवश्यक होने पर।
ध्यान दें कि यदि यह प्रबंधित मेमोरी समस्या है, तो आप हमेशा एक नया एप्लिकेशन डोमेन स्पिन कर सकते हैं, अपना कोड वहां चला सकते हैं (आवश्यकतानुसार परिणामों को आगे बढ़ा सकते हैं) और फिर एप्लिकेशन डोमेन को छोड़ दें ।
समस्या का प्रदर्शन करने और पुस्तकालय के लेखक से संपर्क करने वाला एक छोटा सा नमूना प्रोग्राम बनाएं। – Henrik
यदि आप मेमोरी लीक का कारण जानते हैं, तो आप शायद इसे ठीक करने के लिए प्रतिबिंब का उपयोग कर सकते हैं (हमें इन्फ्राजिस्टिक्स कंट्रोल लाइब्रेरी के पुराने संस्करण के साथ ऐसा करना था)। – sloth
आप कैसे जानते हैं कि यह अप्रबंधित संसाधनों की सफाई नहीं कर रहा है? –