किसी प्रबंधित एप्लिकेशन में देशी मेमोरी लीक का निदान करना (कम से कम शुरुआत में) किसी अन्य मूल एप्लिकेशन में मेमोरी लीक का निदान करने के समान ही है।
जिस तरह से मैं आम तौर पर इन समस्याओं का सामना करता हूं, प्रक्रिया को बड़ी मात्रा में स्मृति को रिसाव करने के लिए, पूर्ण प्रक्रिया डंप लेना और फिर सबसे अधिक स्मृति का उपयोग करने के लिए डंप की जांच करना है। उदाहरण के लिए यदि आपकी प्रक्रिया में ~ 20 एमबी का सामान्य/प्रारंभिक निजी बाइट है लेकिन आप अपनी प्रक्रिया को ~ 200 एमबी निजी बाइट्स तक स्मृति तक रिसाव करने के लिए प्राप्त कर सकते हैं, तो एक अच्छा मौका है कि उस स्मृति का ~ 180 एमबी लीक हो जाता है - आम तौर पर बोलना जो कुछ भी आवंटित किया गया है वह है जहां आपको दिखना शुरू करना चाहिए।
माइक्रोसॉफ्ट के पास DebugDiag नामक एक बहुत ही उपयोगी टूल है - प्रारंभ में आईआईएस में मेमोरी लीक का निदान करने के लिए उपयोग के लिए विकसित किया गया है, यह एक बहुत ही vesatile उपकरण है और स्मृति समस्याओं से निपटने के दौरान बहुत आसान है। यदि आप इसे एक क्रैश डंप देते हैं तो यह कुछ विश्लेषण करेगा और (कम से कम) आपको बताएगा कि मॉड्यूल ने उस स्मृति को आवंटित किया है, फिर आप उस मॉड्यूल का उपयोग कैसे किया जा सकता है, इस बारे में अधिक विशेष रूप से देखना शुरू कर सकते हैं।
क्या आपको पता है कि रिसाव कहां है? हम कोड के बिना आपकी मदद नहीं कर सकते ... –
आप सी # में मूल कोड नहीं लिखते हैं। निश्चित रूप से केवल एक चीज जो आप कर सकते हैं यह सुनिश्चित कर लें कि आप इंटरऑप को सही तरीके से संभालेंगे? –
यह प्रोफाइलर्स के साथ एक आम समस्या है, वे आपको जितना जानना चाहते हैं उससे ज्यादा बताते हैं। बढ़ते निजी बाइट असामान्य नहीं हैं, इसे स्थिर करने में कुछ समय लग सकता है। क्या आप वास्तव में आउटऑफमेमरी अपवाद प्राप्त करते हैं? यदि नहीं तो इसके लिए अनदेखा बिट फ्लिप करें। –