हालाँकि मैं इस फ़ंक्शन के साथ खेलने के गंभीर निहितार्थों को समझता हूं (या कम से कम जो मैं सोचता हूं), मैं यह देखने में विफल हूं कि यह इन चीजों में से एक क्यों बन रहा है, जो सम्मानजनक प्रोग्रामर कभी भी उपयोग नहीं करेंगे, यहां तक कि उन लोगों को भी जो नहीं जानते हैं यह किस लिए है।
मान लीजिए कि मैं एक एप्लिकेशन विकसित कर रहा हूं जहां मेमोरी का उपयोग उपयोगकर्ता के आधार पर बहुत भिन्न होता है। अनुप्रयोग जीवन चक्र को दो मुख्य चरणों में विभाजित किया जा सकता है: संपादन और वास्तविक समय प्रसंस्करण। संपादन चरण के दौरान, मान लीजिए कि अरबों या खरब वस्तुओं का निर्माण होता है; उनमें से कुछ छोटे हैं और उनमें से कुछ नहीं, कुछ में अंतिम रूप हो सकते हैं और कुछ नहीं हो सकते हैं, और मान लें कि उनके जीवनकाल बहुत कम मिलीसेकंड से लेकर लंबे घंटों तक भिन्न होते हैं। इसके बाद, उपयोगकर्ता रीयल-टाइम चरण पर स्विच करने का निर्णय लेता है। इस बिंदु पर, मान लीजिए कि प्रदर्शन एक मौलिक भूमिका निभाता है और कार्यक्रम के प्रवाह में थोड़ी सी भी बदलाव भयावह परिणाम ला सकता है। ऑब्जेक्ट क्रिएशन का उपयोग करके ऑब्जेक्ट निर्माण को न्यूनतम संभव तक कम किया जाता है और इस तरह लेकिन फिर, जीसी अप्रत्याशित रूप से झंकारता है और इसे दूर फेंक देता है, और किसी की मृत्यु हो जाती है।
प्रश्न: इस मामले में, दूसरे चरण में प्रवेश करने से पहले GC.Collect () को कॉल करना बुद्धिमानी नहीं होगी?
आखिरकार, ये दो चरण कभी भी एक-दूसरे के साथ ओवरलैप नहीं होते हैं और जीसी इकट्ठा हो सकने वाले सभी अनुकूलन और आंकड़े बहुत कम उपयोग के होते हैं ...
ध्यान दें: जैसा कि आप में से कुछ ने बताया है, .NET इस तरह से एक आवेदन के लिए सबसे अच्छा मंच नहीं हो सकता है, लेकिन यह इस प्रश्न के दायरे से बाहर है। इरादा स्पष्ट करना है कि क्या GC.Collect () कॉल किसी एप्लिकेशन के समग्र व्यवहार / प्रदर्शन को बेहतर कर सकता है या नहीं। हम सभी इस बात से सहमत हैं कि जिन परिस्थितियों में आप ऐसा करेंगे, वे बेहद दुर्लभ हैं, लेकिन फिर, जीसी अनुमान लगाने की कोशिश करता है और यह ज्यादातर समय पूरी तरह से करता है, लेकिन यह अभी भी अनुमान लगाने के बारे में है।
धन्यवाद।