JVM स्टैक एरिया को समझने के लिए कुछ मुख्य बिंदु निम्नलिखित हैं:
थ्रेड के निर्माण के दौरान, जावा वर्चुअल मशीन एक अलग स्टैक बनाती है।
JVM इस स्टैक पर केवल दो ऑपरेशन्स करता है। ऑपरेशन्स हैं पुश (यानी सम्मिलित करना) और पॉप (यानी हटाना)।
जब कोई थ्रेड वर्तमान में निष्पादन में होता है, तो उससे जुड़ा स्टैक रनटाइम स्टैक के रूप में जाना जाता है।
थ्रेड द्वारा किए गए हर मेथड कॉल, इंटरमीडिएट गणनाएं, लोकल वेरिएबल्स का असाइनमेंट, कॉलिंग पैरामीटर्स आदि, रनटाइम स्टैक में एक ऑपरेशन के रूप में स्टोर होते हैं।
एक बार थ्रेड रुक जाता है या निष्पादन पूरा कर लेता है, तो स्टैक से संबंधित भाग हटा दिया जाता है।
एक बार थ्रेड द्वारा सभी कॉल्स पूरे हो जाने के बाद, स्टैक खाली हो जाता है, और हटा दिया जाता है।
थ्रेड को समाप्त करने से ठीक पहले, JVM थ्रेड से जुड़े स्टैक को नष्ट कर देता है।
थ्रेड से जुड़े डेटा को स्टोर करने वाला स्टैक विशेष रूप से केवल उस विशिष्ट थ्रेड के लिए उपलब्ध होता है, और अन्य थ्रेड्स के लिए अप्राप्य होता है।
यह इंगित करता है कि स्टैक में डेटा थ्रेड-सेफ है।
थ्रेड से जुड़े स्टैक में हर डेटा को एक्टिवेशन रिकॉर्ड या स्टैक फ्रेम के रूप में जाना जाता है।
नोट - JVM स्टैक के लिए सन्निहित मेमोरी लोकेशन होना अनिवार्य नहीं है।
एक्टिवेशन रिकॉर्ड/स्टैक फ्रेम की संरचना
इसमें तीन घटक होते हैं:
लोकल वेरिएबल ऐरे,
ऑपरेंड स्टैक, और
फ्रेम डेटा
JVM क्लास डेटा की जांच करके आवश्यक आकार का एक स्टैक फ्रेम बनाता है।
ऑपरेंड स्टैक JVM के लिए वर्कस्पेस की तरह कार्य करता है - इसका उपयोग इंटरमीडिएट कम्प्यूटेशनल परिणामों को स्टोर करने के लिए किया जाता है। यह स्थानीय रूप से एक वेरिएबल ऐरे की तरह संरचित है, लेकिन स्टैक पर पुश और पॉप ऑपरेशन्स करके एक्सेस किया जा सकता है।
फ्रेम डेटा - इसमें कॉन्स्टेंट डेटा मान और मेथड रिटर्न्ड डेटा होता है। इसके अलावा, इसमें एक्सेप्शन टेबल का एक संदर्भ होता है जिसमें कैच ब्लॉक के बारे में सभी जानकारी होती है जब अपवादों को पकड़ने और कंसोल पर प्रासंगिक संदेश दिखाने की आवश्यकता होती है।