क्या प्रोग्रामर के लिए सी # प्रोग्रामिंग भाषा में कचरा संग्रह को प्रोग्रामेटिक रूप से प्रारंभ/बंद करना संभव है? उदाहरण के लिए, प्रदर्शन अनुकूलन और इसी तरह के लिए।क्या .NET कचरा संग्रह को रोकना संभव है?
उत्तर
वास्तव में नहीं। आप GC
संकेतों को GC.AddMemoryPressure
या GC.RemoveMemoryPressure
जैसी विधियों के माध्यम से संकेत दे सकते हैं लेकिन इसे सीधे नहीं रोक सकते हैं।
इसके अलावा, कचरा संग्रह एक प्रक्रिया की गहन नहीं है। प्रोग्रामर बहुत ही कम कभी इसके बारे में चिंता करते हैं।
तय करेगा ओह, मैं देखता हूं ... SuppressFinalize() विधि के बारे में कैसे? क्या इसका एक अलग उद्देश्य है? – Alex
SuppressFinalize व्यक्तिगत वस्तुओं पर काम करता है। निश्चित रूप से पूरे जीसी पर नहीं। एमएसडीएन से: ऑब्जेक्टिव इंटरफेस को लागू करने वाले ऑब्जेक्ट्स इस विधि को आईडीस्पोजेबल से कॉल कर सकते हैं। ऑब्जेक्ट को कॉल करने से कचरा कलेक्टर को रोकने के लिए विधि का प्रयोग करें। उस ऑब्जेक्ट पर फ़िनलाइज़ करें जिसके लिए इसकी आवश्यकता नहीं है। (इसलिए मूल रूप से यह एक बहुत ही मामूली प्रदर्शन वृद्धि है।) –
मुझे नहीं लगता कि यह * रोकथाम * कचरा संग्रह, प्रति-सी के लिए संकेत कैसे जोड़ देगा; यदि आप 'जीसी.एडएममोरी प्रेसर' कहते हैं तो सीएलआर बनाने में अधिक संभावना होगी * अधिक * कचरा संग्रह क्योंकि यह इंगित करता है कि प्रक्रिया के लिए सीएलआर के लिए उपलब्ध स्मृति (आभासी या अन्यथा) यह सोचने से कम है। सीएलआर को ट्रिक करने के प्रयास में, 'जीसी.एडमेमोरी प्रेसर' को इसी कॉल के बिना 'जीसी.एडमोमरीप्रेसर' को कॉल करने के लिए 'जीसी। रीमूव मेमोरीप्रेस' को कॉल कर सकता है, यह सोचने में कि इसकी तुलना में अधिक मेमोरी है, लेकिन कोई सोचता है कि एपीआई प्रतिरोधी है (एक होगा उम्मीद है) ऐसी चीजों के लिए। – casperOne
नहीं, ऐसा नहीं है। सबसे अच्छा आप कचरा संग्रह स्वयं को ट्रिगर कर सकते हैं, हालांकि इसे बहुत खराब बात माना जाता है क्योंकि यह जीसी द्वारा उपयोग किए गए शेड्यूलिंग एल्गोरिदम में निर्मित हस्तक्षेप कर सकता है।
आप संग्रह को ट्रिगर नहीं कर सकते , बस "सुझाव" कर सकते हैं। जीसी खुद ही –
सामान्य रूप से, नहीं। और अधिकांश लोग इसे कचरा संग्रह के बारे में चिंता करने के लिए समयपूर्व अनुकूलन मानेंगे जबतक कि आप कुछ प्रोफाइलिंग नहीं करते हैं और यह पता लगाते हैं कि यह वास्तव में आपके आवेदन में खराब प्रदर्शन का कारण है।
आप प्रदर्शन के लिए जी सी में सुधार करने के लिए (या अधिक होने की संभावना, जीसी करने के लिए अपने प्रदर्शन में सुधार करने के रिश्तेदार अपने अनुप्रयोग में सुधार करने) के वास्ते में रुचि रखते हैं, MSDN तरीके यह करने के लिए की एक बहुत सभ्य विवरण नहीं है।
GC.TryStartNoGCRegion(...)
और GC.EndNoGCRegion()
:
इस बीच यह संभव है, वहाँ GC
class में तरीके हैं।
- 1. .NET कचरा संग्रह लेटेंसी
- 2. जावास्क्रिप्ट कचरा संग्रह क्या है?
- 3. .NET कचरा संग्रह कैसे डिबग करें?
- 4. .NET कचरा संग्रह - यह क्या प्रभावित करता है?
- 5. कचरा संग्रह को मजबूर करना
- 6. .NET कचरा संग्रह और मूल थ्रेड
- 7. सी # कचरा संग्रह को दबाकर
- 8. कचरा संग्रह
- 9. कचरा संग्रह
- 10. क्या बैकबोन "पढ़ने" अनुरोधों को रोकना संभव है
- 11. कचरा संग्रह
- 12. कचरा संग्रह का उपयोग?
- 13. क्या कचरा संग्रह कभी ढेर को प्रभावित करता है?
- 14. क्या WinRT में कचरा संग्रह है?
- 15. क्या PHP में कचरा संग्रह है?
- 16. मिस्ड कचरा संग्रह अधिसूचनाएं
- 17. .NET 2.0 विंडोज सेवा कचरा संग्रह के दौरान लटकती है
- 18. कचरा संग्रह और कागो
- 19. क्या यह COM ऑब्जेक्ट कचरा संग्रह के अधीन है?
- 20. फोर्स कचरा संग्रह?
- 21. मानक सी ++ में कचरा संग्रह स्वचालित है?
- 22. क्या "प्रोत्साहित" .NET कचरा संग्रह के संदर्भों को रद्द करने का कोई लाभ है?
- 23. पायथन कचरा संग्रह
- 24. आंतरिक संदर्भ कचरा संग्रह
- 25. Django Python कचरा संग्रह
- 26. जावास्क्रिप्ट कचरा संग्रह
- 27. क्या मुक्केबाजी .NET में कचरा बनाती है?
- 28. पायथन धागे कचरा संग्रह
- 29. कचरा संग्रह और धागे
- 30. क्या Google App Engine पर DoSing को रोकना संभव है?
कचरा संग्रह सी # प्रोग्रामिंग भाषा का हिस्सा नहीं है। यह .NET CLR का हिस्सा है। –
"किंडा।" यदि आप कभी भी कुछ आवंटित नहीं करते हैं, तो जीसी कभी एकत्र नहीं करेगा। आपको जो भी चाहिए उसे पूर्व-आवंटित करें और फिर 'जीसी। कोलेक्ट() 'पर कॉल करें। –
शायद इस उत्तर को भी देखें: http://stackoverflow.com/questions/6005865/prevent-net-garbage-collection-for-short-period-of-time/6005949#6005949 – Gamlor