Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

जावा में स्टैक और हीप मेमोरी के बीच अंतर

JVM मेमोरी स्पेस को दो भागों में विभाजित करता है: स्टैक और हीप। स्टैक स्पेस मुख्य रूप से मेथड एक्जीक्यूशन के क्रम और लोकल वेरिएबल्स को स्टोर करने के लिए उपयोग किया जाता है।

स्टैक हमेशा ब्लॉक्स को LIFO (लास्ट इन फर्स्ट आउट) ऑर्डर में स्टोर करता है, जबकि हीप मेमोरी डायनामिक एलोकेशन का उपयोग करके मेमोरी ब्लॉक्स को एलोकेट और डीएलोकेट करता है।

हीप को एलोकेट की गई मेमोरी निम्नलिखित घटनाओं में से एक होने तक जीवित रहती है:

  • प्रोग्राम टर्मिनेट हो जाता है
  • मेमोरी फ्री हो जाती है

इसके विपरीत, स्टैक को एलोकेट की गई मेमोरी तब तक जीवित रहती है जब तक फंक्शन रिटर्न नहीं हो जाता। नीचे मुख्य अंतर दिए गए हैं:

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

मुख्य बिंदु सारांश

  • स्टैक: थ्रेड-प्राइवेट, फास्ट एक्सेस, LIFO, ऑटोमैटिक मेमोरी मैनेजमेंट, छोटा आकार
  • हीप: शेयर्ड, स्लो एक्सेस, डायनामिक, गार्बेज कलेक्टेड, बड़ा आकार

स्टैक ओवरफ्लो आमतौर पर डीप रिकर्सन के कारण होता है, जबकि हीप ओवरफ्लो बड़ी संख्या में ऑब्जेक्ट्स बनाने या मेमोरी लीक के कारण होता है।

  1. स्टैक और हीप के बीच अंतर (Difference Between Stack and Heap) स्टैक और हीप के बीच अंतर (Difference Between Stack and Heap)

    इस पोस्ट में, हम स्टैक (Stack) और हीप (Heap) के बीच अंतर को समझेंगे। स्टैक (Stack) यह एक रैखिक डेटा संरचना है। मेमोरी एक सन्निहित (contiguous) ब्लॉक में आवंटित की जाती है। स्टैक के लिए मेमोरी कंपाइलर के निर्देशों का उपयोग करके स्वचालित रूप से आवंटित और डिएलोकेट की जाती है। स्टैक बनाने और बनाए रखन

  1. - जावा में Iterator और Enumeration के बीच अंतर

    Iterator और Enumeration दोनों कलेक्शन से एलिमेंट्स को ट्रैवर्स और एक्सेस करने के लिए कर्सर हैं। वे दोनों कलेक्शन फ्रेमवर्क से संबंधित हैं। Enumeration JDK 1.0 में जोड़ा गया था और Iterator JDK 1.2 वर्जन में कलेक्शन फ्रेमवर्क में जोड़ा गया। Enumeration कलेक्शन में स्ट्रक्चरल चेंज नहीं कर सकता क्योंकि

  1. - Java में ArrayList और HashSet के बीच अंतर

    HashSet और ArrayList दोनों Java कलेक्शन फ्रेमवर्क के सबसे महत्वपूर्ण क्लासेस में से कुछ हैं।ArrayList और HashSet के बीच महत्वपूर्ण अंतर निम्नलिखित हैं।क्रमांकमुख्य बिंदुArrayListHashSet1कार्यान्वयनArrayList लिस्ट इंटरफेस का कार्यान्वयन है।दूसरी ओर HashSet सेट इंटरफेस का कार्यान्वयन है।2आंतरिक कार्या