मैं सोच रहा हूं कि मुक्केबाजी एक वस्तु में एक मूल्य प्रकार एक विशेष मामला है या क्या .NET द्वारा निर्मित "बॉक्स" कचरा बन जाता है (जिसे जीसी एकत्र करना है) इसके किसी भी संदर्भ के बाद गिरा दिया जाता है। ,क्या मुक्केबाजी .NET में कचरा बनाती है?
StringBuilder.AppendFormat(string format, object arg0);
StringBuilder.AppendFormat(string format, object arg0, object arg1);
StringBuilder.AppendFormat(string format, object arg0, object arg1, object arg2);
StringBuilder.AppendFormat(string format, params object[] args);
3 या इससे कम तर्क के साथ कॉल के लिए उन अतिरिक्त भार के होने कि मुक्केबाजी संकेत हो सकता है वास्तव में एक विशेष मामला है (या इसे बंद का भुगतान करती है कि
:
उदाहरण के लिए, StringBuilder.AppendFormat() इन भार के है सरणी निर्माण से बचने के लिए, प्रदर्शन बिंदु-दृश्य से)।
सैद्धांतिक रूप से, पुराने पुराने संदर्भ गिनती का उपयोग करके, संभवतः पुन: प्रयोज्य बक्से के पूल के साथ एक वैध कार्यान्वयन होगा क्योंकि एक बॉक्स से दूसरे में कोई संदर्भ नहीं हो सकता है, केवल .NET ऑब्जेक्ट्स से बॉक्स में।
मैं .NET में "मुक्केबाजी" के विशिष्ट अर्थ से चिपक रहा हूं। मैं बस सोच रहा था कि क्या स्ट्रिंगबिल्डर वर्ग में उन अधिभार केवल सरणी के रूप में * अतिरिक्त * कचरा रोकने के लिए थे, या फिर वे * सभी * कचरे को रोक देंगे, उदाहरण के लिए। किसी ऑब्जेक्ट में एक पूर्णांक मुक्केबाजी किसी भी कचरे का उत्पादन नहीं करेगा। – Cygon
@Cygon: मुझे लगता है कि "पैरा" पैरामीटर के साथ स्वचालित सरणी निर्माण को कुछ हद तक अस्पष्ट कर दिया गया है - ओवरलोड लोडिंग के लिए पूरी तरह से अप्रासंगिक हैं। हां, ओवरलोड्स संभावित रूप से अतिरिक्त कचरा बनाने से बच सकते हैं, हालांकि मुझे विश्वास नहीं है कि वे करते हैं - मुझे विश्वास है कि अलग-अलग पैरामीटर के लिए अधिभार वास्तव में एक सरणी के साथ कॉल करते हैं, जिससे सरणी स्पष्ट रूप से बनाई जाती है। यह उन भाषाओं की सहायता करता है जो पैरामीटर सरणी का समर्थन नहीं करते हैं। –
मुझे नहीं लगता कि आपका जावा कोड * सत्य 'प्रिंट करने के लिए * गारंटीकृत * है। यह * सूर्य के जेवीएम के साथ 'सत्य' प्रिंट करेगा, क्योंकि 'Integer.valueOf (int)' (आंतरिक रूप से मुक्केबाजी के लिए उपयोग की जाने वाली विधि) के कार्यान्वयन -128 से 127 के मानों के लिए कैश 'इंटेगर' उदाहरण हैं, लेकिन यह एक नहीं है जावा प्लेटफार्म की * आवश्यकता *। अन्य जेवीएम इस तरह के कैशिंग के बिना अनुरूपता का दावा कर सकता है। –