लोग क्यों सोचते हैं कि .NET में एक स्मृति रिसाव किसी अन्य रिसाव के समान नहीं है?
एक स्मृति रिसाव तब होती है जब आप संसाधन से जुड़ते हैं और इसे जाने नहीं देते हैं। आप इसे प्रबंधित और अप्रबंधित कोडिंग दोनों में कर सकते हैं।
.NET, और अन्य प्रोग्रामिंग टूल के बारे में, कचरा संग्रहण के बारे में विचार हैं, और परिस्थितियों को कम करने के अन्य तरीकों से आपके आवेदन रिसाव हो जाएंगे।
लेकिन मेमोरी लीक को रोकने की सबसे अच्छी विधि यह है कि आप जिस प्लेटफॉर्म का उपयोग कर रहे हैं उस पर आपको अपने अंतर्निहित मेमोरी मॉडल को समझने की ज़रूरत है, और चीजें कैसे काम करती हैं।
यह मानते हुए कि जीसी और अन्य जादू आपकी गड़बड़ी को साफ करेंगे, स्मृति रिसाव का छोटा रास्ता है, और बाद में ढूंढना मुश्किल होगा।
जब अप्रबंधित कोडिंग करते हैं, तो आप आमतौर पर साफ करना सुनिश्चित करते हैं, आप जानते हैं कि आपके द्वारा धारित संसाधनों को जैनिटर की सफाई करने की आपकी ज़िम्मेदारी होगी।
दूसरी तरफ .NET में, बहुत से लोग सोचते हैं कि जीसी सब कुछ साफ कर देगा। खैर, यह आपके लिए कुछ करता है, लेकिन आपको यह सुनिश्चित करने की ज़रूरत है कि ऐसा है। .NET बहुत सारी चीज़ें लपेटता है, इसलिए आप हमेशा यह नहीं जानते कि आप किसी प्रबंधित या अप्रबंधित संसाधन से निपट रहे हैं, और आपको यह सुनिश्चित करना होगा कि आप किस चीज से निपट रहे हैं। हैंडलिंग फोंट, जीडीआई संसाधन, सक्रिय निर्देशिका, डेटाबेस इत्यादि आमतौर पर चीजों की आवश्यकता होती है जिन्हें आप देखना चाहते हैं।
प्रबंधित शब्दों में मैं अपनी गर्दन को रखूंगा
यह कहने की रेखा एक बार चली जाती है
प्रक्रिया मारे / हटा दी गई है।
मुझे लगता है कि बहुत से लोगों के पास यह है, और मुझे उम्मीद है कि यह खत्म हो जाएगा। आप उपयोगकर्ता को अपनी गड़बड़ी को साफ करने के लिए अपने ऐप को समाप्त करने के लिए नहीं कह सकते हैं!
एक ब्राउज़र पर एक नज़र डालें, जो आईई, एफएफ इत्यादि हो सकता है, फिर, Google रीडर खोलें, इसे कुछ दिनों तक रहने दें, और देखें कि क्या होता है।
यदि आप ब्राउज़र में एक और टैब खोलते हैं, तो किसी साइट पर सर्फ करें, फिर ब्राउज़र को रिसाव करने वाले दूसरे पेज को होस्ट करने वाले टैब को बंद करें, क्या आपको लगता है कि ब्राउज़र मेमोरी जारी करेगा? आईई के साथ ऐसा नहीं है। यदि मैं Google रीडर का उपयोग करता हूं तो मेरे कंप्यूटर पर आईई आसानी से थोड़ी सी अवधि (लगभग 3-4 दिन) में 1 जीबी मेमोरी खाएगा। कुछ समाचार पत्र भी बदतर हैं।