Stack, Heap ও Garbage Collection
🧠 Python Memory Management: Stack, Heap ও Garbage Collection
Python প্রোগ্রাম কীভাবে মেমোরি ব্যবহার করে তা বোঝা খুবই গুরুত্বপূর্ণ। এই টপিকে আমরা বিস্তারিতভাবে জানব Stack, Heap এবং Garbage Collection কী, কীভাবে কাজ করে এবং উদাহরণসহ আউটপুট দেখব।
📌 Stack Memory কী?
Stack হলো একটি দ্রুত (fast) মেমোরি যেখানে মূলত:
- Function call সংক্রান্ত তথ্য
- Local variables
- Function parameters
Stack মেমোরি LIFO (Last In, First Out) নিয়মে কাজ করে। যখন কোনো function কল হয়, তার জন্য একটি stack frame তৈরি হয়। function শেষ হলে সেই frame স্বয়ংক্রিয়ভাবে মুছে যায়।
🧪 উদাহরণ (Stack):
def add(a, b):
result = a + b
return result
x = 10
y = 20
print(add(x, y))
👉 এখানে a, b, result সবই Stack memory-তে থাকে।
function শেষ হলে এগুলো মেমোরি থেকে মুছে যায়।
Output: 30
📌 Heap Memory কী?
Heap হলো বড় এবং ডায়নামিক মেমোরি যেখানে থাকে:
- Objects (list, dict, set, class instance)
- Mutable data
- Long-lived data
Heap মেমোরি Stack এর তুলনায় ধীর, কিন্তু অনেক বেশি ফ্লেক্সিবল। Python-এর সব object Heap-এই তৈরি হয় এবং variable শুধু তার reference ধরে রাখে।
🧪 উদাহরণ (Heap):
my_list = [1, 2, 3] another_list = my_list print(my_list) print(another_list)
👉 এখানে list object Heap-এ তৈরি হয়েছে।
my_list ও another_list দুটোই একই Heap object-এর reference ধরে রেখেছে।
Output: [1, 2, 3]
📌 Garbage Collection কী?
Python স্বয়ংক্রিয়ভাবে অপ্রয়োজনীয় object মুছে ফেলে। এই প্রক্রিয়াকে বলে Garbage Collection (GC)।
✔ Reference Counting
Python প্রতিটি object-এর জন্য একটি reference count রাখে। reference count শূন্য হলে object মেমোরি থেকে সরিয়ে ফেলা হয়।
a = [1, 2, 3] b = a del a del b
👉 এখানে a এবং b ডিলিট হওয়ার পর list object-এর
reference count শূন্য হয় এবং GC সেটি মুছে ফেলে।
✔ Cyclic Garbage Collection
কখনও কখনও object একে অপরকে reference করে (circular reference)। Python-এর GC এই ধরনের cycle-ও detect করে পরিষ্কার করতে পারে।
import gc
class Test:
pass
obj1 = Test()
obj2 = Test()
obj1.ref = obj2
obj2.ref = obj1
del obj1
del obj2
gc.collect()
👉 এখানে GC circular reference ভেঙে মেমোরি ফ্রি করে।
📊 Stack বনাম Heap (সংক্ষেপে)
| বিষয় | Stack | Heap |
|---|---|---|
| গতি | খুব দ্রুত | তুলনামূলক ধীর |
| ডেটা | Local variables | Objects, list, dict |
| মেমোরি ম্যানেজমেন্ট | Automatic | Garbage Collector |
✨ সংক্ষেপে মনে রাখবেন
- Stack → Function call ও local data
- Heap → Objects ও dynamic data
- Garbage Collection → অপ্রয়োজনীয় object পরিষ্কার করে
- Python memory নিজে থেকেই manage করে
লোড হচ্ছে...
1. Python এ Stack কী?
Stack হলো মেমোরির একটি অংশ যেখানে ফাংশন কল, লোকাল ভেরিয়েবল ও ফাংশন এক্সিকিউশনের তথ্য সংরক্ষণ করা হয়। এটি LIFO (Last In First Out) নিয়মে কাজ করে।
2. Heap মেমোরি কী কাজে ব্যবহৃত হয়?
Heap মেমোরিতে Python এর অবজেক্ট, লিস্ট, ডিকশনারি ইত্যাদি ডাইনামিক ডাটা সংরক্ষণ করা হয় এবং এটি পুরো প্রোগ্রাম জুড়ে অ্যাক্সেসযোগ্য।
3. Garbage Collection কী এবং কেন দরকার?
Garbage Collection হলো অপ্রয়োজনীয় বা রেফারেন্সহীন অবজেক্ট মেমোরি থেকে মুছে ফেলার প্রক্রিয়া, যা মেমোরি লিক প্রতিরোধ করে।