आईएल में, आप .locals
निर्देश का उपयोग कर स्थानीय चर परिभाषित कर सकते हैं। इन चरों को कहाँ संग्रहित किया जाता है, ढेर या ढेर?.NET स्थानीय चर कहाँ संग्रहीत हैं?
उत्तर
यह जेआईटी कंपाइलर का एक कार्यान्वयन विवरण है। यह एक सीपीयू रजिस्टर में स्थानीय चर को स्टोर करने के लिए बहुत कठिन प्रयास करेगा, बहुत ही कुशल। स्टैक सामान्य बैकिंग स्टोर है, यदि सभी स्थानीय चरों को स्टोर करने के लिए पर्याप्त रजिस्ट्रार उपलब्ध नहीं हैं।
उदाहरण के लिए x86 और x64 jitters के बीच बड़ा अंतर। x64 में बहुत अधिक रजिस्ट्रार उपलब्ध हैं। यह किसी विधि को पारित तर्कों पर भी लागू होता है। x86 एक सीपीयू रजिस्टर में 2 पास की अनुमति देता है, x64 अनुमति देता है 4. प्लस जो भी एफपीयू स्टैक या एक्सएमएम रजिस्टरों में संग्रहीत किया जा सकता है। तो, वास्तव में चार अलग-अलग स्थान हैं जहां स्थानीय चर को संग्रहीत किया जा सकता है।
यदि ऑब्जेक्ट एक मान प्रकार नहीं है, तो इसे ढेर पर आवंटित किया जाता है और इसके संदर्भ में स्टैक पर संग्रहीत किया जाता है। अन्यथा, यह सीधे ढेर पर आवंटित किया जाता है।
पैरामीटर के साथ ढेर पर। .. लेकिन .....
1) संदर्भ प्रकारों के लिए, केवल संदर्भ उस स्टैक पर संग्रहीत किया जाता है जिस पर ऑब्जेक्ट इसका जिक्र नहीं करता है। वास्तविक वस्तु ढेर पर संग्रहीत है।
2) मूल्य प्रकारों के लिए, वास्तविक मूल्य स्टैक पर संग्रहीत किया जाता है।
अब जब विधि में निष्पादन प्रवाह, समापन ब्रेस स्टैक पर मान प्रकार डेटा वहाँ और फिर नष्ट हो जाता है तक पहुँच जाता है, जबकि ढेर पर संदर्भ प्रकार वस्तुओं (जिसका संदर्भ इस विधि के ढेर पर यहाँ थे) कर रहे हैं संग्रह के लिए कचरा संग्रहण प्रणाली को कचरा कलेक्टर द्वारा तय किए गए उचित समय पर सौंप दिया गया।
यह भी इसी तरह के कारणों के लिए बहुत भ्रामक है जैसा कि चिह्नित उत्तर में है। इसके अलावा निश्चित रूप से कोई विनाशकारी नहीं चल रहा है। न तो आईएल और न ही मशीन कोड में। ढेर स्थान को बस छोड़ दिया जाता है और अंततः एक अन्य सक्रियण ढेर फ्रेम द्वारा अधिलेखित हो जाता है। यहां तक कि धारणा है कि संदर्भ प्रकार ढेर पर हैं सटीक नहीं है। आंतरिक तार वास्तव में लोडर ढेर में संग्रहीत होते हैं, वही जगह जहां स्थिर चर रखा जाता है। विवरण, विवरण। –
@ हंस: विवरण के लिए धन्यवाद ... आपकी व्याख्या की सराहना की। – explorer
- 1. जावा अंतिम स्थानीय चर कहाँ संग्रहीत हैं?
- 2. रजिस्ट्री में संग्रहीत पर्यावरण चर कहाँ हैं?
- 3. लिनक्स: पर्यावरण चर कहाँ संग्रहीत हैं?
- 4. पंजीकृत सर्वर कहाँ संग्रहीत हैं?
- 5. Magento स्थिर सीएमएस ब्लॉक कहाँ संग्रहीत हैं?
- 6. $ _SESSION चर संग्रहीत कहां से संग्रहीत हैं?
- 7. जीएसी में शारीरिक रूप से संग्रहीत असेंबली कहाँ स्थित हैं?
- 8. फाइल सिस्टम पर क्रोम/टैम्पर्मॉन्की उपयोगकर्ता संग्रह कहाँ संग्रहीत हैं?
- 9. ग्रहण का स्थानीय इतिहास ... फाइलें कहाँ सहेजी गई हैं?
- 10. कैसे | बंद-ओवर चर कहां संग्रहीत हैं?
- 11. स्थानीय चर
- 12. स्थानीय चर
- 13. स्थानीय चर
- 14. संदर्भ स्थानीय - वे स्थानीय संदर्भ चर वैश्विक कैसे बनाते हैं?
- 15. "उठाने" स्थानीय चर
- 16. App.XAML आप कहाँ हैं?
- 17. पहुँच सभी स्थानीय चर
- 18. संग्रहीत प्रक्रिया (.net)
- 19. Properties.Settings.Default कहां संग्रहीत हैं?
- 20. मजबूत नाम कुंजी पासवर्ड कहाँ संग्रहीत किया जाता है?
- 21. जावा HttpSession विशेषताएँ कहाँ संग्रहित हैं?
- 22. .NET के लिए प्रबंधित एक्स्टेंसिबिलिटी फ्रेमवर्क कहाँ?
- 23. सी # गतिशील Linq चर कहाँ खंड
- 24. स्थानीय चर घोषणाओं
- 25. स्थानीय चर गुंजाइश सवाल
- 26. एसक्यूएल क्वेरी, स्थानीय चर
- 27. एक स्थिर स्थानीय चर
- 28. एक बेकार स्थानीय चर
- 29. बैश में स्थानीय चर: स्थानीय बनाम सबहेल
- 30. ओरेकल में जावा कक्षाएं कहाँ संग्रहित हैं?
+1, आईएल की बात करते समय स्थानीय और पैरामीटर के बारे में बहुत भ्रम है। आईएल एक ऑपरेशन स्टैक के साथ काम करता है, लेकिन यह सीधे 'कॉल स्टैक' से मेल नहीं खाता है, जैसे सीसी कंपाइलर द्वारा 'सीडीसीएल' या 'स्टडकॉल' कॉलिंग सम्मेलन के साथ उत्पन्न किया गया है। दोनों तर्क और स्थानीय नंबर क्रमांकित स्लॉट के रूप में माना जाता है; कॉल स्टैक के समानता वाला एकमात्र क्षेत्र तब होता है जब विधि कॉल के पैरामीटर स्लॉट में लोड करने के लिए एक विधि कॉल के पैरामीटर ऑपरेशन स्टैक से पॉप किए जाते हैं। –