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_listanother_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 করে
👼 Quiz
/

লোড হচ্ছে...

Interview Questions:

1. Python এ Stack কী?

Stack হলো মেমোরির একটি অংশ যেখানে ফাংশন কল, লোকাল ভেরিয়েবল ও ফাংশন এক্সিকিউশনের তথ্য সংরক্ষণ করা হয়। এটি LIFO (Last In First Out) নিয়মে কাজ করে।

2. Heap মেমোরি কী কাজে ব্যবহৃত হয়?

Heap মেমোরিতে Python এর অবজেক্ট, লিস্ট, ডিকশনারি ইত্যাদি ডাইনামিক ডাটা সংরক্ষণ করা হয় এবং এটি পুরো প্রোগ্রাম জুড়ে অ্যাক্সেসযোগ্য।

3. Garbage Collection কী এবং কেন দরকার?

Garbage Collection হলো অপ্রয়োজনীয় বা রেফারেন্সহীন অবজেক্ট মেমোরি থেকে মুছে ফেলার প্রক্রিয়া, যা মেমোরি লিক প্রতিরোধ করে।