गो में विलंबता मुक्त कचरा संग्रह नहीं है। यदि आप बता सकते हैं कि वे दावे कहां हैं, तो मैं उन्हें सही करने की कोशिश करना चाहता हूं।
एक लाभ जो हम मानते हैं कि गो जावा पर है, यह है कि यह आपको स्मृति लेआउट पर अधिक नियंत्रण देता है। उदाहरण के लिए, एक साधारण 2 डी ग्राफिक्स पैकेज परिभाषित कर सकता है:
type Rect struct {
Min Point
Max Point
}
type Point struct {
X int
Y int
}
गो में, एक रेक्ट स्मृति में केवल चार पूर्णांक संगत है। आप अभी भी & r.Max को * प्वाइंट की अपेक्षा करने के लिए पास कर सकते हैं, यह केवल रेक्ट वेरिएबल आर के बीच में एक सूचक है।
जावा में, समकक्ष अभिव्यक्ति रेक्ट और पॉइंट क्लासेस बनाना होगा, इस मामले में रेक्ट में न्यूनतम और अधिकतम फ़ील्ड अलग-अलग आवंटित ऑब्जेक्ट्स के पॉइंटर्स होंगे। इसके लिए अधिक आवंटित वस्तुओं की आवश्यकता होती है, अधिक मेमोरी लेती है, और कचरा कलेक्टर को ट्रैक करने के लिए और अधिक करने की आवश्यकता होती है। दूसरी ओर, यह किसी ऑब्जेक्ट के मध्य में पॉइंटर बनाने की आवश्यकता से बचने से बचता है।
जावा की तुलना में, तो गो आपको प्रोग्रामर को मेमोरी लेआउट पर अधिक नियंत्रण देता है, और आप कचरा कलेक्टर पर लोड को कम करने के लिए उस नियंत्रण का उपयोग कर सकते हैं। बड़ी मात्रा में डेटा वाले कार्यक्रमों में यह बहुत महत्वपूर्ण हो सकता है। कैश प्रभावों के कारण हार्डवेयर से प्रदर्शन निकालने के लिए मेमोरी लेआउट पर नियंत्रण भी महत्वपूर्ण हो सकता है, लेकिन यह मूल प्रश्न के लिए स्पर्शपूर्ण है।
वर्तमान गो वितरण में संग्राहक उचित है लेकिन कला का कोई मतलब नहीं है। हम अगले वर्ष या दो में इसे बेहतर बनाने के लिए और अधिक प्रयास करने की योजना बना रहे हैं। स्पष्ट होने के लिए, गो का कचरा कलेक्टर निश्चित रूप से आधुनिक जावा कचरा कलेक्टरों के रूप में उतना अच्छा नहीं है, लेकिन हमें विश्वास है कि उन कार्यक्रमों को लिखना आसान है जिन्हें शुरू करने के लिए कचरा संग्रह की आवश्यकता नहीं है, इसलिए शुद्ध प्रभाव अभी भी हो सकता है एक समकक्ष जावा प्रोग्राम की तुलना में एक गो प्रोग्राम में कचरा संग्रह एक मुद्दा से कम है।
स्रोत
2014-03-06 04:05:40
जावा गेम में मैं कभी भी कचरा कलेक्टर को तब तक नहीं चला सकता जब तक कि खेल में उपयुक्त बिंदु तक नहीं पहुंच जाता (उदाहरण के लिए रोकें मेनू)। इसे प्राप्त करने के लिए मेरे पास हमेशा कुछ प्रकार की मैनेजर क्लास होती है जो सभी बनाई गई ऑब्जेक्ट्स का संदर्भ रखती है और पॉज़ मेनू या स्तर के अंत तक पहुंचने पर उन्हें सभी रिलीज़ करती है। –
आप इसे तुलना के लिए पसंद कर सकते हैं। http://code.google.com/p/jgo/ यदि गो 'स्ट्रक्चर' का समर्थन करता है तो इसमें जीआईटी स्पष्ट रूप से आपके लिए यह करने की अपेक्षा करने के बजाय स्पष्ट रूप से जीसी से बचने की क्षमता है। –
@ जोनटाइलर आपने ऐसा क्यों किया? जेवीएम कचरा कलेक्टर प्रदर्शन या कुछ और के कारण? –