2010-09-29 19 views

उत्तर

9

यह जेआईटी कंपाइलर का एक कार्यान्वयन विवरण है। यह एक सीपीयू रजिस्टर में स्थानीय चर को स्टोर करने के लिए बहुत कठिन प्रयास करेगा, बहुत ही कुशल। स्टैक सामान्य बैकिंग स्टोर है, यदि सभी स्थानीय चरों को स्टोर करने के लिए पर्याप्त रजिस्ट्रार उपलब्ध नहीं हैं।

उदाहरण के लिए x86 और x64 jitters के बीच बड़ा अंतर। x64 में बहुत अधिक रजिस्ट्रार उपलब्ध हैं। यह किसी विधि को पारित तर्कों पर भी लागू होता है। x86 एक सीपीयू रजिस्टर में 2 पास की अनुमति देता है, x64 अनुमति देता है 4. प्लस जो भी एफपीयू स्टैक या एक्सएमएम रजिस्टरों में संग्रहीत किया जा सकता है। तो, वास्तव में चार अलग-अलग स्थान हैं जहां स्थानीय चर को संग्रहीत किया जा सकता है।

+0

+1, आईएल की बात करते समय स्थानीय और पैरामीटर के बारे में बहुत भ्रम है। आईएल एक ऑपरेशन स्टैक के साथ काम करता है, लेकिन यह सीधे 'कॉल स्टैक' से मेल नहीं खाता है, जैसे सीसी कंपाइलर द्वारा 'सीडीसीएल' या 'स्टडकॉल' कॉलिंग सम्मेलन के साथ उत्पन्न किया गया है। दोनों तर्क और स्थानीय नंबर क्रमांकित स्लॉट के रूप में माना जाता है; कॉल स्टैक के समानता वाला एकमात्र क्षेत्र तब होता है जब विधि कॉल के पैरामीटर स्लॉट में लोड करने के लिए एक विधि कॉल के पैरामीटर ऑपरेशन स्टैक से पॉप किए जाते हैं। –

4

यदि ऑब्जेक्ट एक मान प्रकार नहीं है, तो इसे ढेर पर आवंटित किया जाता है और इसके संदर्भ में स्टैक पर संग्रहीत किया जाता है। अन्यथा, यह सीधे ढेर पर आवंटित किया जाता है।

9

पैरामीटर के साथ ढेर पर। .. लेकिन .....
1) संदर्भ प्रकारों के लिए, केवल संदर्भ उस स्टैक पर संग्रहीत किया जाता है जिस पर ऑब्जेक्ट इसका जिक्र नहीं करता है। वास्तविक वस्तु ढेर पर संग्रहीत है।
2) मूल्य प्रकारों के लिए, वास्तविक मूल्य स्टैक पर संग्रहीत किया जाता है।

अब जब विधि में निष्पादन प्रवाह, समापन ब्रेस स्टैक पर मान प्रकार डेटा वहाँ और फिर नष्ट हो जाता है तक पहुँच जाता है, जबकि ढेर पर संदर्भ प्रकार वस्तुओं (जिसका संदर्भ इस विधि के ढेर पर यहाँ थे) कर रहे हैं संग्रह के लिए कचरा संग्रहण प्रणाली को कचरा कलेक्टर द्वारा तय किए गए उचित समय पर सौंप दिया गया।

+2

यह भी इसी तरह के कारणों के लिए बहुत भ्रामक है जैसा कि चिह्नित उत्तर में है। इसके अलावा निश्चित रूप से कोई विनाशकारी नहीं चल रहा है। न तो आईएल और न ही मशीन कोड में। ढेर स्थान को बस छोड़ दिया जाता है और अंततः एक अन्य सक्रियण ढेर फ्रेम द्वारा अधिलेखित हो जाता है। यहां तक ​​कि धारणा है कि संदर्भ प्रकार ढेर पर हैं सटीक नहीं है। आंतरिक तार वास्तव में लोडर ढेर में संग्रहीत होते हैं, वही जगह जहां स्थिर चर रखा जाता है। विवरण, विवरण। –

+0

@ हंस: विवरण के लिए धन्यवाद ... आपकी व्याख्या की सराहना की। – explorer

संबंधित मुद्दे