हालांकि प्रबंधित कोड का कोई प्रत्यक्ष स्मृति प्रबंधन नहीं है, फिर भी आपको अपने उदाहरणों का प्रबंधन करना होगा। उन उदाहरणों का दावा 'स्मृति। और यह उन सभी उदाहरणों के उपयोग के बारे में है, जब आप उन्हें उम्मीद नहीं करते हैं तो उन्हें जीवित रखें।
बस कई उदाहरणों में से एक: डिस्पोजेबल कक्षाओं के गलत उपयोग के परिणामस्वरूप स्मृति का दावा करने के कई उदाहरण हो सकते हैं। विंडोज़ सेवा के लिए, उदाहरणों की धीमी लेकिन स्थिर वृद्धि अंततः परिणामस्वरूप बहुत मेमोरी उपयोग कर सकती है।
हां, मेमोरी लीक का विश्लेषण करने के लिए एक उपकरण है। यह सिर्फ मुफ़्त नहीं है। हालांकि आप 7 दिनों के निशान के भीतर अपनी समस्या की पहचान करने में सक्षम हो सकते हैं।
मैं .NET Memory Profiler पर लूट लेने का सुझाव दूंगा।
विकास के दौरान स्मृति रिसाव का विश्लेषण करना बहुत अच्छा है। यह नए उदाहरणों, निपटारे उदाहरणों आदि की तुलना करने के लिए स्नैपशॉट की अवधारणा का उपयोग करता है। यह समझने में एक बड़ी मदद है कि आपकी सेवा इसकी स्मृति का उपयोग कैसे करती है। फिर आप गहराई से खोद सकते हैं कि नए उदाहरण क्यों बनाए जाते हैं या जीवित रहते हैं।
हां, आप यह पुष्टि करने के लिए परीक्षण कर सकते हैं कि मेमोरी लीक पेश किए गए हैं या नहीं। हालांकि, बॉक्स के बाहर यह बहुत उपयोगी नहीं होगा। ऐसा इसलिए है क्योंकि रनटाइम के दौरान क्या होगा, कोई भी उम्मीद नहीं कर सकता है। उपकरण आपके ऐप का विश्लेषण आम मुद्दों के लिए कर सकता है, लेकिन इसकी गारंटी नहीं है।
हालांकि, अगर आप इस उपकरण NUnit
या MSTest
की तरह अपने इकाई परीक्षण ढांचे में स्मृति की खपत को एकीकृत करने के लिए उपयोग कर सकते हैं।
यह सब इस बात पर निर्भर करता है कि आपकी सेवा वास्तव में क्या करती है। – Evk
@Evk चाहे सेवा क्या करती है, मैं कैसे सुनिश्चित कर सकता हूं कि सेवा में कोई स्मृति रिसाव नहीं है? – Mhd
मेरा मतलब है कि वास्तव में मेमोरी लीक, विशेष रूप से विंडोज़ सेवा के लिए प्रोग्राम का परीक्षण करना मुश्किल है। कुछ समय के लिए आपको वास्तव में समय के साथ इसका उपयोग करना होगा। बढ़ती हुई स्मृति खुद ही रिसाव का संकेत नहीं है, क्योंकि अगर कोई कारण नहीं है (कोई स्मृति दबाव नहीं) तो जीसी कुछ भी इकट्ठा नहीं कर सकता है। तो सबसे अच्छा आप कर सकते हैं बिना लीक के अच्छे कोड लिखते हैं और समय के साथ एप्लिकेशन के मेमोरी उपयोग की निगरानी भी करते हैं, अगर मेमोरी कुछ थ्रेसहोल्ड तक पहुंच जाती है और प्रोफाइलर के साथ उनका विश्लेषण करती है तो मेमोरी डंप इकट्ठा करें। – Evk