"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > जेवीएम मेमोरी को नेविगेट करना: आपके जावा साक्षात्कार के लिए मुख्य अवधारणाएँ

जेवीएम मेमोरी को नेविगेट करना: आपके जावा साक्षात्कार के लिए मुख्य अवधारणाएँ

2024-11-04 को प्रकाशित
ब्राउज़ करें:106

जावा डेवलपर साक्षात्कार की तैयारी करते समय, यह समझना कि जावा वर्चुअल मशीन (जेवीएम) के भीतर मेमोरी कैसे व्यवस्थित की जाती है, चर्चा का एक प्रमुख विषय हो सकता है। यह पोस्ट जेवीएम में विभिन्न मेमोरी क्षेत्रों पर प्रकाश डालेगी - विशेष रूप से स्टैक, हीप, और मेटास्पेस - आवश्यक बिंदु प्रदान करेगी जिन पर साक्षात्कारकर्ता ध्यान केंद्रित कर सकते हैं। इन अवधारणाओं से खुद को परिचित करके, आप अपनी साक्षात्कार तैयारी बढ़ा सकते हैं और जावा मेमोरी प्रबंधन की अपनी समझ प्रदर्शित कर सकते हैं।

JDK, JRE और JVM की भूमिकाएँ

जेवीएम के मेमोरी स्पेस में सीधे गोता लगाने से पहले, आइए जल्दी से जावा डेवलपमेंट किट (जेडीके), जावा रनटाइम एनवायरनमेंट (जेआरई), और जावा के बीच संबंध का पता लगाएं। वर्चुअल मशीन (JVM), और पहचानें कि वास्तव में JVM इस ढांचे में कहां फिट बैठता है।

Navigating JVM Memory: Key Concepts for Your Java Interview

  • जावा डेवलपमेंट किट (जेडीके) एक संपूर्ण सॉफ्टवेयर डेवलपमेंट किट है जिसमें शामिल हैं:

    • जावा विकास के लिए आवश्यक सभी उपकरण।
    • जावा रनटाइम एनवायरनमेंट (जेआरई), जो जावा एप्लिकेशन चलाने के लिए आवश्यक है।
  • जावा रनटाइम एनवायरनमेंट (जेआरई) में शामिल हैं:

    • जावा वर्चुअल मशीन (जेवीएम), जो जावा बाइटकोड को निष्पादित करने के लिए जिम्मेदार मुख्य घटक है।
    • क्लास लाइब्रेरीज़: पूर्व-संकलित कक्षाएं जो स्ट्रिंग, मैथ आदि जैसे इन कार्यों की मैन्युअल कोडिंग की आवश्यकता के बिना आपके प्रोग्राम को चलाने में मदद करती हैं।
  • संक्षेप में:

    • JVM जावा अनुप्रयोगों को चलाने वाले निष्पादन इंजन के रूप में कार्य करता है।
    • JDK जावा एप्लिकेशन बनाने के लिए डेवलपर्स के लिए टूलकिट के रूप में कार्य करता है।

इस समझ के साथ, अब हम अपना ध्यान जेवीएम के मेमोरी क्षेत्रों, विशेष रूप से स्टैक, हीप और मेटास्पेस पर केंद्रित कर सकते हैं, यह देखने के लिए कि जावा अनुप्रयोगों के निष्पादन के दौरान मेमोरी कैसे व्यवस्थित की जाती है।

1. स्टैक मेमोरी

स्टैक मेमोरी में क्या संग्रहीत है:

  • विधि कॉल: हर बार जब कोई विधि लागू की जाती है, तो एक नया फ्रेम स्टैक पर धकेल दिया जाता है, जिसमें शामिल हैं:
    • विधि पैरामीटर्स: विधि को दिए गए तर्क।
    • स्थानीय चर: विधि के भीतर घोषित चर। यह भी शामिल है:
      • आदिम डेटा प्रकार: आदिम प्रकार के रूप में घोषित स्थानीय चर के वास्तविक मान सीधे स्टैक में संग्रहीत होते हैं।
      • ऑब्जेक्ट्स का संदर्भ: ऑब्जेक्ट प्रकार के स्थानीय चर के लिए, केवल वास्तविक ऑब्जेक्ट्स (जो ढेर मेमोरी में रहते हैं) के संदर्भ स्टैक में संग्रहीत होते हैं।
    • वापसी पता: विधि निष्पादन पूरा होने के बाद वापस लौटने का पता।

स्टैक मेमोरी के बारे में अतिरिक्त जानकारी:

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

2. ढेर मेमोरी

हीप मेमोरी में क्या संग्रहीत है:

  • ऑब्जेक्ट्स: केवल ऑब्जेक्ट हीप मेमोरी में संग्रहीत होते हैं। यह भी शामिल है:
    • उपयोगकर्ता-परिभाषित क्लास ऑब्जेक्ट: उपयोगकर्ता-परिभाषित कक्षाओं से बनाए गए उदाहरण।
    • अंतर्निहित क्लास ऑब्जेक्ट्स: जावा की अंतर्निहित कक्षाओं के उदाहरण, जिनमें सरणी और ArrayList, HashMap, आदि जैसी संग्रह कक्षाएं शामिल हैं।
    • इंस्टेंस वेरिएबल्स: किसी ऑब्जेक्ट से संबंधित गैर-स्थैतिक फ़ील्ड के रूप में, इंस्टेंस वेरिएबल्स को ऑब्जेक्ट के साथ ढेर में संग्रहीत किया जाता है।
    • स्ट्रिंग पूल: ढेर में एक विशेष क्षेत्र जो स्ट्रिंग अक्षर संग्रहीत करता है। यदि एक स्ट्रिंग शाब्दिक बनाया जाता है, तो जावा पहले स्ट्रिंग पूल की जाँच करता है; यदि यह मौजूद है, तो नई वस्तु बनाने के बजाय मौजूदा वस्तु का संदर्भ वापस कर दिया जाता है।

हीप मेमोरी के बारे में अतिरिक्त जानकारी:

  • मेमोरी आवंटन: जब ऑब्जेक्ट बनाया जाता है तो मेमोरी आवंटित की जाती है और जब ऑब्जेक्ट पहुंच योग्य नहीं रह जाता है तो कचरा संग्रहकर्ता द्वारा हटा दिया जाता है।
  • कचरा संग्रहण: कचरा संग्रहकर्ता स्वचालित रूप से उन वस्तुओं की पहचान करके और उन्हें हटाकर ढेर में मेमोरी का प्रबंधन करता है जो अब पहुंच योग्य या आवश्यक नहीं हैं।
  • साझा मेमोरी: हीप मेमोरी को सभी थ्रेड्स के बीच साझा किया जाता है, जिससे अंतर-थ्रेड संचार की अनुमति मिलती है। एक थ्रेड द्वारा बनाई गई वस्तुओं को अन्य थ्रेड द्वारा एक्सेस, संशोधित या संदर्भित किया जा सकता है। इससे साझा वस्तुओं तक पहुंच प्रबंधित करने, डेटा स्थिरता सुनिश्चित करने और दौड़ की स्थिति से बचने के लिए मल्टीथ्रेडिंग तकनीकों के उपयोग की आवश्यकता होती है।

3. विधि क्षेत्र / मेटास्पेस

मेथड एरिया को जावा 8 और बाद में मेटास्पेस के रूप में भी जाना जाता है।

मेथड एरिया/मेटास्पेस में क्या संग्रहीत है:

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

विधि क्षेत्र/मेटास्पेस के बारे में अतिरिक्त जानकारी:

  • साझा मेमोरी: विधि क्षेत्र सभी थ्रेड्स के बीच साझा किया जाता है, जिसका अर्थ है कि जेवीएम के भीतर केवल एक मेटास्पेस उदाहरण मौजूद है। यह कक्षा की जानकारी के कुशल प्रबंधन की अनुमति देता है और मेमोरी ओवरहेड को कम करता है।
  • सिंक्रनाइज़ेशन: विसंगतियों को रोकने और थ्रेड सुरक्षा सुनिश्चित करने के लिए मेथड एरिया तक पहुंचने पर जेवीएम सिंक्रोनाइज़ेशन को संभालता है।

निष्कर्ष

किसी भी जावा डेवलपर के लिए इन तीन मेमोरी क्षेत्रों को समझना महत्वपूर्ण है। वे कचरा संग्रहण, मेमोरी लीक, और थ्रेड सुरक्षा जैसी महत्वपूर्ण अवधारणाओं की नींव बनाते हैं, जिन पर इस श्रृंखला के आगामी लेखों में चर्चा की जाएगी।

संबंधित पोस्ट

  • जावा बुनियादी बातें

  • साक्षात्कार अनिवार्यताओं की सारणी

हैप्पी कोडिंग!

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/arshisaxena26/navigating-jvm-memory-key-concepts-for-your-java-interview-2nc8?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163.com पर संपर्क करें। इसे हटाने के लिए
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3