मेमोरी रिसाव को ट्रैक करने का सबसे अच्छा तरीका क्या है जो केवल एक ग्राहक के परीक्षण/रिलीज बॉक्स पर पाया जाता है, और कहीं और नहीं?मेमोरी लीक (सी #) को ट्रैक करने का सबसे अच्छा तरीका केवल एक ग्राहक के बॉक्स पर दिखाई देता है
उत्तर
में विश्लेषण (यह सवाल थोड़े अजीब है मेरी मशीन पर ...)
उपयोगकर्ता लगातार समस्या यह है, तो मैं एक मेम रिसाव जो मौजूद नहीं है पर नज़र रखने कर रहा हूँ कारण है, एक stackdump लेने के लिए और मानक तरीका
ANTS Profiler जैसे मेमोरी प्रोफाइलर आज़माएं।
यहां एक विकल्प है: उन्हें एक बॉक्स दें जहां रिसाव मौजूद नहीं है।
कभी-कभी, यह कोड नहीं है।
संपादित करें: यह या तो कोड, डेटा या कॉन्फ़िगरेशन है।
या .NET Framework, ओएस, ड्राइवर, आईआईएस, या COM (उदाहरण के लिए एक्सेल स्वचालित करना), या इसी तरह।
मेरी धारणा यह है कि मेमोरी लीक क्लाइंट के बॉक्स को छोड़कर पुन: उत्पन्न नहीं होती है (जिसे देव को डिबगिंग के लिए एक्सेस करने की अनुमति नहीं दी जा सकती है)।
तो, क्या आपका मतलब है कि हार्डवेयर इसे वापस देने के बिना स्मृति आवंटित करता है? वाह! मैं भयभीत हूं। – xmjx
हार्डवेयर स्मृति को रिसाव करने में सक्षम नहीं होना चाहिए। लेकिन खराब लिखित ड्राइवर निश्चित रूप से कर सकते हैं। –
यह या तो कोड, डेटा या कॉन्फ़िगरेशन है।
चूंकि आप कहते हैं कि कोड 100% दोषपूर्ण नहीं है, मैं विन्यास दोष दूंगा। कॉन्फ़िगरेशन की एक प्रति लें (और वैकल्पिक रूप से कुछ डेटा) और समस्या को दोहराने का प्रयास करें; आपको पता नहीं चलेगा कि आपने प्रजनन के बिना इसे पाया और ठीक किया है।
अंत में, इसे मेमोरी प्रोफाइलर के साथ हल करें।
पेर्फमॉन सहायक हो सकता है (http://dotnetdebug.net/2005/06/30/perfmon-your-debugging-buddy/)। ऐसे कई काउंटर हैं जो संसाधन को लीक करने में मदद कर सकते हैं, और किस दर पर,
डिलीकर या इसी तरह के डीबगर (vld, purify) का प्रयास करें - मदद करनी चाहिए ... – MastAvalons
मैं इस मामले के लिए डिलीकर को भी सलाह देता हूं। –