কম্পিউটার টিউটোরিয়াল

জাভাতে স্ট্যাক এবং হিপ মেমোরির পার্থক্য

জাভা ভার্চুয়াল মেশিন (JVM) মেমোরি স্পেসকে মূলত দুটি অংশে ভাগ করে: স্ট্যাক এবং হিপ। স্ট্যাক স্পেস প্রধানত মেথড এক্সিকিউশনের ক্রম এবং লোকাল ভেরিয়েবল সংরক্ষণের জন্য ব্যবহৃত হয়।

স্ট্যাক এবং হিপ মেমোরির মূল পার্থক্য

ক্রমিক নং বিষয় স্ট্যাক হিপ মেমোরি
১ বেসিক স্ট্যাক মেমোরি ছোট জীবনকালীন আইটেম সংরক্ষণ করে যেমন লোকাল ভেরিয়েবল, অবজেক্টের রেফারেন্স ভেরিয়েবল হিপ মেমোরি অবজেক্ট এবং JRE ক্লাস সংরক্ষণের জন্য আলোকিত হয়
২ অর্ডারিং স্ট্যাক সবসময় LIFO (লাস্ট ইন ফার্স্ট আউট) ক্রমে সংরক্ষিত থাকে হিপ মেমোরি ডাইনামিক অ্যালোকেশন ব্যবহার করে, মেমোরি ব্লক অ্যালোকেট এবং ডিঅ্যালোকেট করার জন্য কোনো নির্দিষ্ট প্যাটার্ন নেই
৩ আকার JVM প্যারামিটার -XSS ব্যবহার করে স্ট্যাক মেমোরির আকার বাড়ানো যায় JVM অপশন -Xms এবং -Xmx ব্যবহার করে হিপ মেমোরির আকার বাড়ানো বা কমানো যায়
৪ দৃশ্যমানতা ভেরিয়েবল শুধু মালিক থ্রেডের কাছে দৃশ্যমান সব থ্রেডের কাছে দৃশ্যমান
৫ এক্সেপশন JVM java.lang.StackOverflowError নিক্ষেপ করে JVM java.lang.OutOfMemoryError নিক্ষেপ করে

মেমোরি লাইফসাইকেল

হিপ মেমোরি: নিচের ঘটনাগুলির একটি না হওয়া পর্যন্ত জীবিত থাকে:

  • প্রোগ্রাম টার্মিনেট হওয়া
  • মেমোরি ফ্রি করা

স্ট্যাক মেমোরি: ফাংশন রিটার্ন না হওয়া পর্যন্ত জীবিত থাকে।

মূল ধারণা

  • স্ট্যাক থ্রেড-স্থানীয় (thread-local) এবং দ্রুত অ্যাক্সেসযোগ্য
  • হিপ শেয়ার্ড মেমোরি এবং গার্বেজ কালেক্টরের অধীন
  • প্রিমিটিভ টাইপ এবং রেফারেন্স সাধারণত স্টকে থাকে, অবজেক্ট হিপে থাকে
  1. স্ট্যাক এবং হিপের পার্থক্য

  2. জাভাতে Serialization এবং Externalization-এর পার্থক্য

  3. জাভাতে Iterator এবং Enumeration-এর পার্থক্য

  4. জাভাতে ArrayList এবং HashSet-এর পার্থক্য