जावा वर्चुअल मशीन (जेवीएम) जावा पारिस्थितिकी तंत्र का मूल है, जो जावा कोड चलाने के लिए सभी आवश्यक उपकरण प्रदान करता है। यह कैसे काम करता है इसे पूरी तरह से समझने के लिए, इस दुभाषिया के जीवनचक्र और जावा अनुप्रयोगों के प्रदर्शन और अनुकूलन के लिए इसके निहितार्थ को समझना महत्वपूर्ण है।
संपूर्ण जेवीएम जीवन चक्र "जेवीएम बूटस्ट्रैपिंग" नामक एक मौलिक प्रक्रिया से शुरू होता है जो संपूर्ण निष्पादन वातावरण के निर्माण और इसे तैयार करने के लिए जिम्मेदार है। यह इस संदर्भ में है कि: कमांड लाइन पर पारित तर्कों की व्याख्या की जाती है, जेवीएम कोड को मेमोरी में आवंटित किया जाता है, जेवीएम की आंतरिक डेटा संरचनाओं को प्रारंभ किया जाता है, मेमोरी प्रबंधन शुरू होता है, और अंत में मुख्य एप्लिकेशन थ्रेड संचालन से गुजरता है। आइए इस अनुच्छेद में वर्णित प्रत्येक उपप्रक्रिया को व्यक्तिगत रूप से देखें:
कमांड लाइन पर पारित तर्कों की व्याख्या की जाती है
जब प्रोग्राम कमांड लाइन के माध्यम से शुरू किया जाता है, तो जेवीएम प्रदान किए गए तर्कों का विश्लेषण करने के लिए जिम्मेदार प्रक्रियाओं की एक श्रृंखला शुरू करता है, जिसमें आरंभीकरण पैरामीटर शामिल हो सकते हैं - जैसे: -Xms और -Xmx न्यूनतम आकार और अधिकतम ढेर को परिभाषित करने के लिए, एप्लिकेशन के संदर्भ में वस्तुओं को आवंटित करने और बनाने के लिए जिम्मेदार मेमोरी का क्षेत्र - कचरा संग्रहकर्ता चक्र के डिबग विनिर्देश या कॉन्फ़िगरेशन भी।
आगे बढ़ने से पहले, यह उल्लेख करना महत्वपूर्ण है: सरलता के लिए, हम कोड के उस खंड का विश्लेषण करेंगे जो उन्नत जेवीएम तर्कों को पार्स करने से संबंधित है - जो -XX से शुरू होते हैं।
अधिक स्पष्टता के लिए, हम आगे के संदर्भों के लिए ओपनजेडीके से ओपन-सोर्स कोड का उपयोग करेंगे। फ़ाइल में arguments.cpp निर्देशिका में स्थित src/hotspot/share/runtime.arguments.cpp फ़ंक्शन जो सीएलआई द्वारा उन्नत पैरामीटर (-XX) की व्याख्या करता है वह यह है:
संक्षिप्त विश्लेषण करते हुए, फ़ंक्शन यह देखने के लिए जांच शुरू करता है कि क्या पारित तर्क या - से शुरू होता है, यह निर्धारित करता है कि ध्वज बूलियन है या नहीं, और यह भी कि क्या इसे निष्क्रिय या सक्रिय किया जाना चाहिए।
उसके बाद, कोड ध्वज का नाम निकालना शुरू कर देता है। प्रत्येक वर्ण का विश्लेषण किया जाता है, यदि यह अल्फ़ान्यूमेरिक नहीं है या _ नहीं है, तो यह समाप्त हो जाता है (अर्थात ध्वज का नाम पूरा हो गया है)।
चेक करने और ध्वज नाम की पहचान करने के बाद, विधि JVMFlag* flag = find_jvm_flag(name, name_len); को अंततः यह देखने के लिए लागू किया जाता है कि जो प्रदान किया गया था उसके लिए कोई कॉन्फ़िगरेशन उपलब्ध है या नहीं।
यह एक छोटा सा सारांश है कि -XX के सबसे उन्नत तर्कों को कैसे पार्स किया जाता है। हालाँकि, इसी फ़ाइल में, जिसका मैं उल्लेख करूंगा, यह खोजना संभव है, तर्क प्रक्रियाएं जो -X से शुरू होती हैं जो एक अन्य पार्सिंग फ़ंक्शन से गुजरती हैं:
ध्वज का उदाहरण: -XMS
निर्माणाधीन लेख
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3