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

JVM জাভাতে কতগুলো মেমোরি এলোকেট করে এবং সেগুলো কী কী?

JVM (Java Virtual Machine) জাভা বাইটকোড (.class ফাইল) নেয় এবং সেটিকে লাইন বাই লাইন মেশিন বোঝায় কোডে রূপান্তর করে। JVM-এ একটি Class Loader মডিউল থাকে যা ক্লাস লোড, লিংক এবং ইনিশিয়ালাইজ করে।

JVM-এর ৫টি মেমোরি এলাকা (Runtime Data Areas)

মেমোরি এলাকাবর্ণনা
1. Heap (হিপ) রানটাইমে অবজেক্টগুলো (রেফারেন্স টাইপ) স্টোর করার জন্য। সব থ্রেড শেয়ার করে। গারবেজ কালেক্টর এখানে কাজ করে।
2. Stack (স্ট্যাক) প্রতিটি থ্রেডের জন্য একটি স্ট্যাক থাকে। লোকাল ভেরিয়েবল, প্যার্শিয়াল রেজাল্ট, মেথড কল ফ্রেম (Frame) এখানে স্টোর হয়। থ্রেড শেষ হলে ফ্রেম নষ্ট হয়। মেথড ইনভোকেশন ও রিটার্নে ভূমিকা রাখে।
3. PC Registers (Program Counter Registers) প্রতিটি থ্রেডের জন্য একটি PC রেজিস্টার থাকে। JVM বর্তমানে যে ইনস্ট্রাকশন এক্সিকিউট করছে তার অ্যাড্রেস এখানে থাকে। নেটিভ মেথডের জন্য undefined।
4. Execution Engine (এক্সিকিউশন ইঞ্জিন) বাইটকোড এক্সিকিউট করার জন্য। ভায়ারচুয়াল প্রসেসর, ইন্টারপ্রেটার (লাইন বাই লাইন), এবং JIT (Just-In-Time) কম্পাইলার (হট কোডকে নেটিভ মেশিন কোডে কম্পাইল করে) এখানে থাকে।
5. Native Method Stacks (নেটিভ মেথড স্ট্যাক) নেটিভ মেথড (C/C++ লেখা মেথড, JNI-এর মাধ্যমে) কল করার জন্য আলাদা স্ট্যাক। সাধারণ স্ট্যাকের মতো কাজ করে কিন্তু নেটিভ কোডের জন্য।

দ্রষ্টব্য: Heap এবং Method Area (Class Metadata, Runtime Constant Pool - Java 8+ এ Metaspace) সব থ্রেড শেয়ার করে। Stack, PC Registers, Native Method Stacks থ্রেড-লোকাল (প্রতি থ্রেড আলাদা)।

  1. Android-এ Intent কত প্রকারের হয়?

  2. জাভাতে JList-এ কত প্রকার সিলেকশন মোড থাকে?

  3. জাভাতে কত প্রকার JDialog বক্স তৈরি করা যায়?

  4. জাভাতে ইনহেরিট্যান্সের প্রকারভেদ