Day 38 Garbage Collection
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.
// 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.
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.