Java Technologies JVM এর Memory Model এর ধারণা গাইড ও নোট

514

Java Virtual Machine (JVM) এর Memory Model হল সেই কাঠামো যা JVM এর মেমরি ব্যবস্থাপনা সংক্রান্ত সিদ্ধান্ত নেয় এবং JVM দ্বারা ব্যবহৃত বিভিন্ন মেমরি অঞ্চল এবং তাদের কার্যকারিতা বর্ণনা করে। JVM এর মেমরি মডেল নিশ্চিত করে যে কিভাবে প্রোগ্রাম চলাকালে মেমরি আলোকিত, পুনঃব্যবহৃত এবং ব্যবহৃত হবে, এবং এটি বিভিন্ন মেমরি অঞ্চলের মধ্যে ডেটা ট্রান্সফার করার প্রক্রিয়া নিয়ন্ত্রণ করে।

JVM Memory Model Overview

JVM এর মেমরি মডেল প্রধানত দুইটি অংশে বিভক্ত:

  1. Method Area (যাকে Metaspace বলা হয়)
  2. Heap Area
  3. Stack Area
  4. Program Counter (PC) Register
  5. Native Method Stack

এই অঞ্চলগুলো একে অপরের সাথে মিথস্ক্রিয়া করে এবং একে অপরকে সমন্বিতভাবে কাজ করার জন্য একটি পূর্ণাঙ্গ পরিবেশ তৈরি করে।


JVM Memory Model এর বিভিন্ন অংশ:

1. Method Area (Metaspace)

  • ব্যাখ্যা: Method Area JVM এর একটি গুরুত্বপূর্ণ অংশ যেখানে সমস্ত ক্লাসের তথ্য সংরক্ষিত হয়, যেমন ক্লাস ডেটা, মেথড ডেটা, কনস্ট্রাক্টর, স্ট্যাটিক ভেরিয়েবল ইত্যাদি।
  • পরিচালনা: এটি গ্লোবাল মেমরি অঞ্চলে ক্লাস লোড করা এবং স্ট্যাটিক ভেরিয়েবল রাখা হয়। এই অঞ্চলের মেমরি অবজেক্টগুলির জন্য ব্যবহার করা হয়।
  • Metaspace: জাভা ৮ এর পর Method Area কে Metaspace নামে রিনেম করা হয়েছে, যা JVM দ্বারা ব্যবহৃত ক্লাস ডেটা এবং স্ট্যাটিক তথ্য সংরক্ষণ করে।

2. Heap Area

  • ব্যাখ্যা: Heap মেমরি অঞ্চলে সমস্ত objects এবং instance variables সংরক্ষিত থাকে।
  • পরিচালনা: Java এ new কিওয়ার্ড ব্যবহার করে যখন একটি অবজেক্ট তৈরি করা হয়, তখন সেটি Heap মেমরিতে রাখা হয়।
  • Garbage Collection: Heap এর প্রধান সুবিধা হল গার্বেজ কালেকশনের মাধ্যমে মেমরি ব্যবস্থাপনা। যখন একটি অবজেক্ট আর ব্যবহৃত হয় না, তখন Garbage Collector সেটি মুছে ফেলে।

3. Stack Area

  • ব্যাখ্যা: Stack মেমরি অঞ্চলে প্রোগ্রামের মেথড কলে ডেটা সঞ্চিত থাকে।
  • পরিচালনা: প্রতিটি মেথড কলের জন্য একটি নতুন stack frame তৈরি হয় যেখানে মেথডের লোকাল ভেরিয়েবল এবং রিটার্ন ঠিকানা থাকে।
  • পদ্ধতি: যখন মেথড এক্সিকিউট হয়, তখন তার সমস্ত লোকাল ভেরিয়েবল (যেমন প্রাইমেটিভ ডেটা এবং রেফারেন্স ডেটা) এবং মেথড কল স্ট্যাক ফ্রেমে রাখা হয়। মেথড সম্পন্ন হলে, স্ট্যাক ফ্রেমটি মুছে ফেলা হয়।

4. Program Counter (PC) Register

  • ব্যাখ্যা: Program Counter (PC) Register JVM এর মধ্যে একটি বিশেষ রেজিস্টার যা বর্তমান এক্সিকিউট করা হচ্ছে এমন মেথডের ইনস্ট্রাকশন ট্যাক্স করে। এটি মেথডের বর্তমান লাইনে গমন করার জন্য ব্যবহৃত হয়।
  • পরিচালনা: প্রতিটি থ্রেডের জন্য আলাদা PC Register থাকে। এটি থ্রেডের জন্য রানটাইম কোডের ট্র্যাকিং করে।

5. Native Method Stack

  • ব্যাখ্যা: Native Method Stack হল সেই মেমরি যেখানে native methods (যেমন C, C++ কোড) এর জন্য সঞ্চিত হয়।
  • পরিচালনা: এটি JVM এর বাইরে থাকা কোড (যেমন, C বা C++ কোড) চালানোর জন্য ব্যবহৃত হয়, যা Java এর বাইরের অপারেশন চালায়।

JVM Memory Model এর Workflow:

  1. Class Loading: যখন Java ক্লাস লোড হয়, তখন Class Loader ক্লাস ফাইলটি Method Area তে লোড করে।
  2. Object Creation: যখন new কিওয়ার্ড ব্যবহার করে অবজেক্ট তৈরি করা হয়, তখন সেটি Heap Area তে সংরক্ষিত হয়।
  3. Method Execution: মেথড কল করার সময়, তার Stack Frame Stack মেমরিতে তৈরি হয়, যেখানে মেথডের লোকাল ভেরিয়েবল এবং মেথডের রিটার্ন ঠিকানা থাকে।
  4. Program Counter: এক্সিকিউশন চলাকালীন PC Register নিশ্চিত করে কোন মেথডটি রান করছে এবং কোথায় গতি অব্যাহত থাকবে।
  5. Native Methods: যদি কোনো native method কল হয়, তবে তা Native Method Stack থেকে চলে আসে।

JVM Memory Model: Memory Management

JVM এর মেমরি ব্যবস্থাপনা খুবই গুরুত্বপূর্ণ কারণ এটি নিশ্চিত করে যে, মেমরি ব্যবহৃত হচ্ছে সঠিকভাবে এবং যেকোনো অব্যবহৃত ডেটা বা অবজেক্ট মুছে ফেলা হচ্ছে যাতে অ্যাপ্লিকেশনটি নির্বিঘ্নে চলতে পারে।

Garbage Collection:

  • Garbage Collection JVM এর গুরুত্বপূর্ণ অংশ যেখানে Heap Memory থেকে অব্যবহৃত অবজেক্টগুলি মুছে ফেলা হয়। এটি স্বয়ংক্রিয়ভাবে পরিচালিত হয় এবং মেমরি ব্যবস্থাপনাকে সহজ করে তোলে।
  • Young Generation: নতুন অবজেক্টগুলি এখানে সংরক্ষিত হয়।
  • Old Generation: যখন অবজেক্টগুলি দীর্ঘস্থায়ী হয়, তখন সেগুলি এখানে চলে আসে।

Memory Leaks:

যদি কোন অবজেক্টের রেফারেন্স হারানো যায়, তবে তা memory leak সৃষ্টি করতে পারে। এটি মেমরি ব্যবস্থাপনায় সমস্যা তৈরি করতে পারে, যদিও Garbage Collector অব্যবহৃত অবজেক্টগুলি মুছে ফেলে। মেমরি লিক সাধারণত তখন ঘটে যখন একটি অবজেক্টের আর কোনো রেফারেন্স নেই কিন্তু তা মুছে ফেলা হয়নি।


JVM Memory Model এর Advantages:

  1. Automated Memory Management: JVM স্বয়ংক্রিয়ভাবে garbage collection এবং মেমরি পরিচালনা করে, যা ডেভেলপারদের ম্যানুয়াল মেমরি ম্যানেজমেন্ট থেকে মুক্তি দেয়।
  2. Thread-Specific Memory Areas: Stack এবং PC Register প্রতিটি থ্রেডের জন্য আলাদা থাকে, যা মাল্টি-থ্রেডিংয়ের ক্ষেত্রে সাহায্য করে।
  3. Method Area and Class Data: Method Area-তে ক্লাসের সমস্ত তথ্য সংরক্ষণ করা হয়, যা class loading এবং execution এর সময় প্রয়োজন হয়।

সারাংশ:

JVM Memory Model একটি গুরুত্বপূর্ণ অংশ যা Java প্রোগ্রাম চলাকালীন মেমরি ব্যবস্থাপনা করে। এটি বিভিন্ন মেমরি অঞ্চল, যেমন Method Area, Heap, Stack, Program Counter Register, এবং Native Method Stack ব্যবহার করে Java প্রোগ্রাম রান করার জন্য প্রয়োজনীয় ডেটা সংরক্ষণ করে এবং পরিচালনা করে। এই মডেলটি গার্বেজ কালেকশন, থ্রেড মেমরি, এবং মেমরি ম্যানেজমেন্টের মাধ্যমে প্রোগ্রামের কার্যক্ষমতা এবং স্থিরতা নিশ্চিত করে।

Content added By
Promotion

Are you sure to start over?

Loading...