Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • JavaScript Documentation48টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Introduction
  • JavaScript কী?
  • Syntax & Comments
  • Variables
  • Data Types: Basics
  • Data Types: Conversion
  • Data Types: Advanced
  • Strings
  • Numbers & Math
  • Date & Time
  • Operators
  • Conditions
  • Loops
  • Functions: Basics
  • Functions: Intermediate
  • Functions: Advanced
  • Scope & Hoisting
  • Closures & this
  • ES6+ Modern
  • Arrays: Basics
  • Arrays: Intermediate
  • Arrays: Advanced
  • Objects: Basics
  • Objects: Intermediate
  • Objects: Advanced
  • Class: Basics
  • Class: Intermediate
  • Class: Advanced
  • DOM: Basics
  • DOM: Intermediate
  • DOM: Advanced
  • Events: Basics
  • Events: Intermediate
  • Events: Advanced
  • Async JavaScript
  • Promise
  • Async / Await
  • Fetch API
  • JSON
  • Modules
  • Browser Storage
  • Event Loop Deep
  • Prototype Chain
  • Iterators & Generators
  • WeakMap, WeakSet, Proxy
  • Error Handling
  • Practice Problems
  • Mini Projects
  • Basics
  • Functions & Scope
  • Types & Syntax
  • Arrays & Objects
  • Advanced
  • Functional Programming
  • Objects & Symbols
  • Async Deep Dive
  • Modern JavaScript
  1. Docs
  2. JavaScript
  3. প্রশ্ন/উত্তর
  4. Modern JavaScript
  5. Q49. What is garbage collection in JavaScript and how does memory management work?
JavaScriptModern JavaScript

Q49. What is garbage collection in JavaScript and how does memory management work?

না ব্যবহৃত মেমোরি কীভাবে স্বয়ংক্রিয়ভাবে মুক্ত হয়, reachability-এর ধারণা।

JavaScript-এ garbage collector (GC) স্বয়ংক্রিয়ভাবে সেই মেমোরি ফেরত নেয় যা আর কোনো কোডের কাজে লাগছে না। আপনাকে মেমোরি নিজে থেকে ছাড়তে হয় না, তবে কীভাবে এটি কাজ করে বোঝলে অনেক সমস্যা এড়ানো যায়।

মূল নিয়মটি হলো reachability — যে কোনো মান পুরো অবস্থায় root থেকে পৌঁছানো যায় না, সেটাই আর দরকার নেই এবং সংগ্রহ করা হয়।

reachabilityjavascript
javascript
let user = { name: "Rahim" }; // এখন root থেকে পৌঁছানো যায়

user = null;
// এখন কোনো reference নেই, তাই GC এই object মুক্ত করতে পারে

// কিন্তু reference থাকলে মুক্ত হবে না
let cache = { data: [1, 2, 3] };
console.log(cache.data.length); // পড়া হলেও reference মুছে যায় না

ধাপে ধাপে — প্রথমে user variable-এ reference থাকায় object সফলভাবে চলছে। user = null করলে reference ভেঙে যায়, ফলে সেই object আর root থেকে পৌঁছানো যায় না এবং GC তাকে মুক্ত করে। কিন্তু cache-এর reference যতক্ষণ আছে, ততক্ষণ সেটিও মুক্ত হবে না।

GC সাধারণত mark and sweep ভাবে কাজ করে — প্রথমে পৌঁছানো যায় এমন সব মান mark করে, তারপর যেগুলো mark হয়নি সেগুলো sweep করে মুক্ত করে।

scope শেষ হলেjavascript
javascript
function createUser() {
  return { name: "Rahim", data: new Array(1000000) };
}

let result = createUser();
result = null;

// কোথাও reference নেই, তাই এই বড় object কিছুক্ষণ পরেই মুক্ত হবে

const ব্যবহার করলেও object-ই mutable থাকে — const শুধু reference বদলাতে বাঁধে, তাই reference বদলে ফেললে সেই object-ও মুক্ত হয়ে যায়।

reference ধরে রাখাjavascript
javascript
// ❌ দীর্ঘস্থায়ী reference থাকলে GC হবে না
let handlers = [];

function setup() {
  const bigData = new Array(1000000).fill(0);

  handlers.push(() => bigData.length);
  // handlers খালি না হলে bigData মেমোরিতে থেকে যাবে
}

// ✅ যখন দরকার নেই তখন মুছে দিন
handlers.length = 0;
WeakRefjavascript
javascript
// পুরোনো browser-এ WeakMap ছিল একমাত্র উপায়
// এখন WeakRef ও FinalizationRegistry আছে (ES2021)

let heavy = { data: new Array(1000000) };

const ref = new WeakRef(heavy);

heavy = null; // reference ভাঙলাম

// পরে যখন GC চায় তখনই ফেরত আসবে
const collected = ref.deref();
console.log(collected); // object অথবা undefined

WeakMap আর WeakSet-এর key হিসেবে object রাখলে সেই object আর অন্য কোথাও reference না থাকলেও GC হতে পারে — এভাবে cache বানালে memory leak টানা যায় না।

Map বনাম WeakMapjavascript
javascript
// Map-এ cache রাখলে key object আটকে যায়
const cache = new Map();

const key = { id: 1 };
cache.set(key, "তথ্য");

// key = null করলেও cache-এ reference থাকায় মেমোরি মুক্ত হবে না

// ✅ WeakMap ব্যবহার করলে সমস্যা নেই
const weakCache = new WeakMap();
weakCache.set(key, "তথ্য");

key = null; // এখন মেমোরি ফেরত দেওয়া সম্ভব

Stack ও Heap-এর পার্থক্য মনে রাখা দরকার — primitive মান (number, string, boolean) stack-এ থাকে, আর object, array, function সবসময় heap-এ। তাই reference-ভিত্তিক মেমোরি ম্যানেজমেন্ট মূলত heap নিয়েই কাজ করে।

বিষয়বিবরণ
কে মেমোরি ফেরত দেয়GC (engine নিজে)
মূল নিয়মreference না থাকলেই মুক্ত হয়
কৌশলmark and sweep
চালু করা যায়globalThis.gc() — শুধু Node flag দিয়ে
নিয়ন্ত্রণমূলত সম্ভব নয়, কোড লিখেই ঠিক করতে হয়
মজার তথ্য

ব্রাউজারে GC চালানোর সাধারণ কোনো উপায় নেই, তাই মেমোরি অনেক বেড়ে গেলে WeakRef বা WeakMap ব্যবহার করা ভালো। Node.js-এ --expose-gc ফ্ল্যাগ দিলে শুধু debug করার সময় globalThis.gc() ডেকে মেমোরি তাড়াতাড়ি মুক্ত করা যায়।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
Modern JavaScript বিভাগের আরও প্রশ্নJavaScript প্রশ্ন/উত্তর
Tech Tutor

বাংলায় ওয়েব ডেভেলপমেন্ট ডকুমেন্টেশন শিখুন — ধাপে ধাপে।

Homeসব ডকুমেন্টেশনQuick Startআমার নোটস

© 2026 Tech Tutor. বাংলায় শিখুন, বাংলায় গড়ুন।

mdanamolhasan1998@gmail.com