JVM ने मेमोरी स्पेस को दो भागों में विभाजित किया है एक है स्टैक और दूसरा है हीप स्पेस। स्टैक स्पेस मुख्य रूप से विधि निष्पादन और स्थानीय चर के क्रम को संग्रहीत करने के लिए उपयोग किया जाता है।
स्टैक हमेशा LIFO क्रम में ब्लॉक संग्रहीत करता है जबकि हीप मेमोरी मेमोरी ब्लॉकों को आवंटित करने और हटाने के लिए गतिशील आवंटन का उपयोग करता है।
हीप को आवंटित मेमोरी निम्न में से कोई एक घटना होने तक रहती है:
- कार्यक्रम समाप्त
- मेमोरी फ्री
इसके विपरीत, स्टैक को आवंटित मेमोरी फ़ंक्शन के वापस आने तक रहती है। नीचे अंतर हैं।
Sr. नहीं. | कुंजी | Stack | हीप मेमोरी |
---|---|---|---|
1 | बेसिक | स्टैक मेमोरी का उपयोग उन वस्तुओं को संग्रहीत करने के लिए किया जाता है जिनका जीवन बहुत छोटा होता है जैसे स्थानीय चर, वस्तुओं का एक संदर्भ चर | हेप मेमोरी को ऑब्जेक्ट्स और JRE क्लासेस को स्टोर करने के लिए आवंटित किया जाता है। |
2 | आदेश देना | स्टैक हमेशा LIFO (लास्ट इन फर्स्ट आउट) क्रम में आरक्षित होता है | हीप मेमोरी गतिशील आवंटन है, मेमोरी में ब्लॉक आवंटित करने और हटाने के लिए कोई निश्चित पैटर्न नहीं है |
3 | Size | हम JVM पैरामीटर -XSS का उपयोग करके स्टैक मेमोरी का आकार बढ़ा सकते हैं | हम JVM विकल्प -Xms और -Xmx का उपयोग करके हीप मेमोरी का आकार बढ़ा या घटा सकते हैं |
4 | दृश्यता | चर केवल स्वामी थ्रेड के लिए दृश्यमान हैं | यह सभी थ्रेड्स को दिखाई देता है |
5 | अपवाद | JVM java.lang को फेंक देगा।StackOverFlowError | JVM java.lang को फेंक देगा।OutOfMemoryError |