साक्षात्कारकर्ता ने आज मुझसे इस बारे में पूछा ... क्या कोई जवाब है?कचरा कलेक्टर को चलाने के लिए कैसे मजबूर करें?
उत्तर
System.GC.Collect()
बलों को चलाने के लिए कचरा कलेक्टर। यह अनुशंसित नहीं है लेकिन यदि स्थिति उत्पन्न होती है तो इसका उपयोग किया जा सकता है।
+1 "यदि स्थिति उत्पन्न होती है" के लिए +1। –
इसकी अनुशंसा क्यों नहीं की जाती है? –
GC.Collect()
MDSN से
,
इस विधि का प्रयोग करें सभी स्मृति कि दुर्गम है को पुनः प्राप्त करने के लिए प्रयास करने के लिए।
सभी ऑब्जेक्ट्स, भले ही कितनी देर तक वे स्मृति में हैं, संग्रह के लिए माना जाता है; हालांकि, ऑब्जेक्ट्स जिन्हें प्रबंधित कोड में संदर्भित किया गया है, एकत्र नहीं किए जाते हैं। को अधिकतम मेमोरी उपलब्ध स्मृति को पुनः प्राप्त करने के लिए सिस्टम को मजबूर करने के लिए इस विधि का उपयोग करें।
, ध्यान रखें, हालांकि, कि कचरा कलेक्टर हमेशा आप क्या उम्मीद को साफ नहीं हो सकता है ...
इसका क्या मतलब है? यह अप्रत्याशित रूप से साफ क्या हो सकता है? – Voldemort
@ वोल्डमॉर्ट - यह अप्रत्याशित रूप से कुछ भी साफ नहीं करेगा। लेकिन यह सबकुछ साफ नहीं कर सकता है जिसे आप उम्मीद करते हैं। –
यह जीसी स्पष्ट रूप से कॉल करने के लिए अनुशंसित नहीं है, लेकिन अगर आप
फोनGC.Collect();
GC.WaitForPendingFinalizers();
यह जीसी स्पष्ट रूप से अपने कोड भर फोन करेगा, GC.Collect()
के बाद GC.WaitForPendingFinalizers();
कॉल करने के लिए मत भूलना।
'WaitForPendingFinalizers' जरूरी नहीं है कि "बेहतर प्रदर्शन" दें: यह केवल तब तक अवरुद्ध हो जाता है जब तक कि अंतिमकरण कतार में सभी ऑब्जेक्ट को अंतिम रूप दिया नहीं जाता है (ऑब्जेक्ट जो आपके पिछले कॉल द्वारा 'संग्रह' पर रखे गए हों)। यदि आप के लिए एक मौका चाहते हैं उन ऑब्जेक्ट्स को इकट्ठा करने के लिए आपको * * कलेक्शन '* कॉल करने के बाद' कलेक्ट 'पर कॉल करने के लिए * एक और * कॉल की आवश्यकता है * – LukeH
क्योंकि जीसी कॉल करने के कुछ अच्छे कारणों में से एक है संसाधनों को मुक्त करने के लिए आखिरी प्रयासों के रूप में है ठीक तरह से निपटान नहीं किया गया है, WaitForPendingFinalizers एक आवश्यक कदम प्रतीत होता है। सुनिश्चित नहीं है कि gc. को कॉल करने से बचने के लिए सबसे अच्छा अभ्यास क्या होगा। हालांकि, ऐसे मामलों में अत्यधिक चयन करें। बीटीडब्ल्यू, मुझे आश्चर्य है कि मैं एफ क्या कोई तकनीकी कारण है कि जीसीओ पीढ़ियों को बढ़ावा देने के लिए 'है' का चयन करें? पीढ़ियों को तब तक रखना उपयोगी लगेगा जब तक कि इसे आगे बढ़ने के औचित्य के लिए पर्याप्त सामान आवंटित नहीं किया जाता है। – supercat
_ सी # _ (मेरे जैसे) में शुरुआती लोगों के लिए नोट: जीसी फोर्स कॉल की गारंटी नहीं है, कुछ कंक्रीट अप्रयुक्त ऑब्जेक्ट को स्मृति से हटा दिया जाएगा। (ऐसा करने का एक तरीका "कथन का उपयोग" (https://msdn.microsoft.com/ru-ru/library/yh598w02(v=vs.80).aspx) का उपयोग कर रहा है) – user1234567
आप कचरा कलेक्टर को चलाने के लिए मजबूर नहीं करना चाहते हैं।
हालांकि, अगर आप कभी (बेशक एक विशुद्ध रूप से शैक्षिक व्यायाम, के रूप में) किया:
GC.Collect()
मैं @ कार्तिक का उत्तर पसंद करता हूं, वहां ऐसी परिस्थितियां हो सकती हैं जहां एक ऐप को वैध रूप से जीसी कॉल करना चाहिए। हालांकि बहुत ही कम है। –
कहें कि आपके पास कमजोर संदर्भों की एक श्रृंखला थी और यह जांचना चाहता था कि कोई 'लाइव' संदर्भ मौजूद है या नहीं। चेकिंग से पहले जीसी। कोलेक्ट() को कॉल करना समझदारी होगी। बस केह रहा हू। –
मुझे लगता है कि नेट फ्रेमवर्क स्वचालित रूप से ऐसा करता है लेकिन बस मामले में। सबसे पहले, क्या आप मिटाना चाहते हैं, का चयन करने के लिए सुनिश्चित करें, और उसके बाद कचरा कलेक्टर फोन:
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();
मुझे लगता है कि यह है .. आशा है मैं किसी को मदद करते हैं।
GC.Collect();
हम कचरा कलेक्टर की विधि एकत्र करके कचरा कलेक्टर कहते हैं। ज्यादातर कचरा कलेक्टर को कॉल करने की कोई आवश्यकता नहीं होती है क्योंकि यह निरंतर थ्रेड
- 1. JRuby - कचरा कलेक्टर कैसे शुरू करें?
- 2. LogManager और कचरा कलेक्टर
- 3. Node.js 'कचरा कलेक्टर
- 4. कचरा कलेक्टर कॉल निपटान()?
- 5. कंज़र्वेटिव कचरा कलेक्टर
- 6. ग्रहण: कचरा कलेक्टर बटन
- 7. कचरा कलेक्टर और वृत्तीय संदर्भ
- 8. .NET कचरा कलेक्टर की क्षमता
- 9. पायथन: कचरा कलेक्टर का व्यवहार
- 10. जावा धागे और कचरा कलेक्टर
- 11. कचरा संग्रह को मजबूर करना
- 12. जावा संग्रह और कचरा कलेक्टर
- 13. विनाशक और कचरा कलेक्टर के बीच अंतर
- 14. कचरा कलेक्टर यूनिट परीक्षणों के साथ कैसे काम करता है?
- 15. मैं जावा कचरा कलेक्टर को कैसे अक्षम कर सकता हूं?
- 16. क्या वेबकिट आधारित ब्राउज़र में जावास्क्रिप्ट कचरा कलेक्टर को मजबूर करने का कोई तरीका है?
- 17. gcServer = "true" कचरा कलेक्टर सेट करने के लिए नेट
- 18. सी ++ के लिए कचरा कलेक्टर क्या उपलब्ध हैं?
- 19. .NET कचरा कलेक्टर और x64 वर्चुअल मेमोरी
- 20. कचरा कलेक्टर और स्थैतिक वर्ग, परिवर्तनीय
- 21. जावा ConcurrentMarkSweep कचरा कलेक्टर सभी कचरे को हटा नहीं रहा
- 22. जावास्क्रिप्ट/कचरा कलेक्टर में परिपत्र संदर्भ
- 23. .NET 4 कचरा कलेक्टर की मापनीयता
- 24. .NET कचरा कलेक्टर की आंतरिक कार्यप्रणाली?
- 25. रूबी में कचरा कलेक्टर ट्यूनिंग 1.9
- 26. नेट कचरा कलेक्टर - देखें कि रनटाइम
- 27. कमजोर संदर्भों का विश्लेषण करते समय कचरा कलेक्टर ब्लॉक करें
- 28. कचरा कलेक्टर का उपयोग कितना समय है?
- 29. क्या सी ++ में कचरा कलेक्टर है?
- 30. सीएमएस कचरा कलेक्टर - यह कब चलता है?
द्वारा पृष्ठभूमि प्रक्रिया में लगातार चल रहा है इस प्रश्न में अच्छी जानकारी है कि आपको ऐसा क्यों नहीं करना चाहिए: http://stackoverflow.com/questions/118633/ क्या-गलत-उपयोग-उपयोग-जीसी-संग्रह –
आप इस –
की तरह क्यों कह रहे हैं कि यह प्रश्न क्यों नहीं है (क्यों नहीं) सवाल से बहुत कम महत्वपूर्ण है। –