साक्षात्कारकर्ता ने आज मुझसे इस बारे में पूछा ... क्या कोई उत्तर है?
साक्षात्कारकर्ता ने आज मुझसे इस बारे में पूछा ... क्या कोई उत्तर है?
जवाबों:
System.GC.Collect()कचरा उठाने वाले को चलाने के लिए मजबूर करता है। यह अनुशंसित नहीं है, लेकिन यदि स्थिति उत्पन्न होती है तो इसका उपयोग किया जा सकता है।
स्पष्ट रूप से gc को कॉल करने की अनुशंसा नहीं की जाती है, लेकिन यदि आप कॉल करते हैं
GC.Collect();
GC.WaitForPendingFinalizers();
यह आपके पूरे कोड में GC को स्पष्ट रूप से कॉल करेगा, इसके GC.WaitForPendingFinalizers();बाद कॉल करना न भूलें GC.Collect()।
WaitForPendingFinalizersआवश्यक रूप से "बेहतर प्रदर्शन" नहीं देता है: यह बस तब तक अवरुद्ध करता है जब तक कि अंतिम कतार में सभी वस्तुओं को अंतिम रूप नहीं दिया जाता है (ऐसी वस्तुएं जो आपके पिछले कॉल द्वारा वहां डाल दी गई हों Collect)। यदि आप चाहते हैं उन लोगों के लिए एक मौका तो एकत्र होने के लिए आप की जरूरत की वस्तुओं एक और करने के लिए कॉल Collect के बाद फोन कर WaitForPendingFinalizers।
WaitForPendingFinalizers?
GC.Collect()
से MDSN ,
इस विधि का उपयोग सभी मेमोरी को पुनः प्राप्त करने का प्रयास करें जो दुर्गम है।
सभी वस्तुएं, चाहे वे कितने समय तक स्मृति में रही हों, संग्रह के लिए मानी जाती हैं; हालाँकि, प्रबंधित कोड में संदर्भित ऑब्जेक्ट एकत्र नहीं हैं। उपलब्ध स्मृति की अधिकतम मात्रा को पुनः प्राप्त करने के लिए सिस्टम को मजबूर करने के लिए इस पद्धति का उपयोग करें।
हालांकि, ध्यान रखें कि कूड़ा उठाने वाला हमेशा आपकी अपेक्षा के अनुरूप सफाई नहीं कर सकता है ...
आप कचरा संग्रहकर्ता को चलने के लिए बाध्य नहीं करना चाहते हैं।
हालांकि, अगर आपने कभी (विशुद्ध रूप से अकादमिक अभ्यास के रूप में) किया है:
GC.Collect()
मुझे लगता है कि .Net फ्रेमवर्क यह स्वचालित रूप से करता है लेकिन सिर्फ मामले में। सबसे पहले, यह सुनिश्चित करना चुनें कि आप क्या मिटाना चाहते हैं, और फिर कचरा कलेक्टर को कॉल करें:
randomClass object1 = new randomClass
...
...
// Give a null value to the code you want to delete
object1 = null;
// Then call the garbage collector to erase what you gave the null value
GC.Collect();
मुझे लगता है कि यह बात है .. आशा है कि मैं किसी की मदद करूंगा।