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

Java में StackOverflowError और OutOfMemoryError के बीच क्या अंतर हैं?


जब भी हम जावा प्रोग्राम चलाते हैं, तो ऑपरेटिंग सिस्टम JVM को कुछ मेमोरी आवंटित करता है। JVM इस मेमोरी को दो भागों में विभाजित करता है। एक है स्टैक मेमोरी और दूसरी है हीप मेमोरी। स्टैक का उपयोग विधियों के निष्पादन के लिए किया जाता है और हीप का उपयोग वस्तुओं को संग्रहीत करने के लिए किया जाता है। जब स्टैक भर जाता है, JVM java.lang.StackOverflowError फेंकता है और जब ढेर भर जाता है, JVM java.lang.OutOfMemoryError फेंकता है।

StackOverflowError

  • स्टैक का उपयोग विधियों के निष्पादन के लिए किया जाता है। प्रत्येक विधि कॉल के लिए, स्टैक मेमोरी में एक ब्लॉक बनाया जाता है
  • इस ब्लॉक में पैरामीटर, स्थानीय चर या वस्तुओं के संदर्भ जैसी विधि से संबंधित डेटा संग्रहीत किया जाता है।
  • जब विधि अपना निष्पादन पूरा कर लेती है, तो इस ब्लॉक को इसमें संग्रहीत डेटा के साथ स्टैक से हटा दिया जाता है।
  • जब भी हम किसी मेथड को कॉल करते हैं, तो उसे अपना एक्जीक्यूशन पूरा करना होगा और स्टैक मेमोरी को छोड़ना होगा।
  • यदि विधियाँ स्टैक में रह रही हैं तो स्टैक भर जाएगा और JVM java.lang.StackOverflowError को फेंक देगा।

OutOfMemoryError

  • Java में हमने जो ऑब्जेक्ट बनाए हैं, वे हीप मेमोरी में स्टोर हो जाते हैं। जब वस्तुओं की आवश्यकता नहीं रह जाती है, तो उन्हें स्मृति से हटा दिया जाना चाहिए।
  • कचरा संग्रहकर्ता अवांछित वस्तुओं को ढेर मेमोरी से हटा देता है।
  • यदि हमारी वस्तुओं में लाइव संदर्भ हैं, तो कचरा संग्रहकर्ता उन्हें नहीं हटाता है। यह केवल उन वस्तुओं को हटाता है जिनका लाइव संदर्भ नहीं है।
  • जब भी हम किसी मेथड को कॉल करते हैं, तो उसे अपना एक्जीक्यूशन पूरा करना होगा और स्टैक मेमोरी को छोड़ना होगा।
  • यदि हीप मेमोरी में नई वस्तुओं के लिए कोई स्थान नहीं बचा है तो JVM java.lang.OutOfMemoryError को फेंक देगा।

  1. जावा में JTextField और JTextArea के बीच क्या अंतर हैं?

    JTextField . के बीच मुख्य अंतर और JTextArea जावा में यह है कि एक JTextField पाठ की एक पंक्ति . में प्रवेश करने की अनुमति देता है GUI एप्लिकेशन में जबकि JTextArea पाठ की एक से अधिक पंक्तियाँ entering दर्ज करने की अनुमति देता है GUI एप्लिकेशन में। JTextField एक JTextFeld सबसे महत्वपूर्ण घटकों म

  1. जावा में JFrame और JDialog में क्या अंतर हैं?

    जेफ्रेम फ्रेम में जोड़े गए घटकों को इसकी सामग्री के रूप में संदर्भित किया जाता है, इन्हें contentPane द्वारा प्रबंधित किया जाता है . JFrame . में एक घटक जोड़ने के लिए , हमें इसके contentPane . का उपयोग करना चाहिए इसके बजाय। एक JFrame शीर्षक . के साथ एक विंडो है , सीमा , (वैकल्पिक) मेनू बार और उप

  1. Java में GridLayout और GridBagLayout में क्या अंतर हैं?

    एक ग्रिडलेआउट सभी घटकों को एक आयताकार ग्रिड में रखता है और समान आकार के आयतों . में विभाजित किया जाता है और प्रत्येक घटक को एक आयत के अंदर रखा जाता है जबकि GridBagLayout एक लचीला . है लेआउट प्रबंधक जो घटकों को लंबवत और क्षैतिज रूप से . संरेखित करता है यह आवश्यक नहीं है कि घटक समान आकार के हों।