Day 38

Garbage Collection

10 min
JavaScript 100 Days

Garbage Collection (GC) automatically unused memory free karta hai. JavaScript mein Mark-and-Sweep algorithm use hota hai — jo objects unreachable hote hain unhe free kiya jata hai.

How GC Works

Mark-and-Sweep — reachable objects ko mark karo, baaki ko sweep karo.

gc.js
javascript
// Object reachable hai — GC free nahi karega
let user = { name: "Zohaib" };
let ref = user; // 2 references!

// ek reference hatao
user = null; 
// ref abhi bhi point kar raha hai → GC nahi hatayega

ref = null;
// ab koi reference nahi → GC hatayega ✅

// Circular reference — old engines mein issue tha
function createCycle() {
  let a = {};
  let b = {};
  a.ref = b;
  b.ref = a;
  // Modern GC handles this — mark-and-sweep se
}

WeakRef

WeakRef se weak reference rakho — GC ko block na karo.

weakref.js
javascript
let cache = new Map();

function process(obj) {
  // Strong reference — GC nahi kar sakta
  cache.set(obj.id, obj);
}

// WeakRef — GC kar sakta hai jab memory chahiye
let weakCache = new Map();

function processWeak(obj) {
  weakCache.set(obj.id, new WeakRef(obj));
}

// Later — check if still alive
function getFromCache(id) {
  let ref = weakCache.get(id);
  return ref?.deref(); // undefined if GC'd
}

🎯 Practice Challenge

Objects banao aur references null karo. DevTools Heap Snapshot se verify karo GC ne unhe hataya ya nahi.