JVM (Java Virtual Machine) बाइटकोड को मशीन कोड में बदलता है और निम्नलिखित पांच मेमोरी क्षेत्र आवंटित करता है:
| मेमोरी क्षेत्र | विवरण |
|---|---|
| Heap | ऑब्जेक्ट्स (रेफरेंस टाइप्स) के लिए रनटाइम स्टोरेज; गैराज कलेक्टेड; सभी थ्रेड्स द्वारा साझा। |
| Stack | प्रति-थ्रेड; लोकल वेरिएबल्स, आंशिक परिणाम, मेथड कॉल फ्रेम्स रखता है; थ्रेड समाप्त होने पर नष्ट होता है। |
| PC Registers | प्रोग्राम काउंटर; प्रति-थ्रेड; वर्तमान में निष्पादित JVM इंस्ट्रक्शन का पता रखता है। |
| Execution Engine | इंटरप्रेटर (बाइटकोड लाइन-बाय-लाइन), JIT कंपाइलर (हॉट कोड को नेटिव में कंपाइल), गैराज कलेक्टर शामिल हैं। |
| Native Method Stacks | नेटिव मेथड्स (JNI के माध्यम से C/C++ कोड) के लिए स्टैक; प्रति-थ्रेड। |
अतिरिक्त: मेटास्पेस (Java 8+)
क्लास मेटाडेटा (क्लास परिभाषाएं, स्टेटिक फ़ील्ड्स, मेथड डेटा) मेटास्पेस में संग्रहीत होता है, जो नेटिव मेमोरी का हिस्सा है, Java 7 के पर्मजेन को प्रतिस्थापित करता है।
सारांश
- Heap & Stack: मुख्य एप्लिकेशन मेमोरी
- PC Registers & Native Method Stacks: प्रति-थ्रेड निष्पादन स्थिति
- Execution Engine: निष्पादन तंत्र (JVM का हिस्सा, डेटा क्षेत्र नहीं)