Foundationপ্রথম নীতি থেকে
LEVEL 5 · Programming Languages

Garbage Collection

গারবেজ কালেকশন

Runtime নিজেই বের করে কোন object আর কেউ পৌঁছাতে পারে না (unreachable), আর সেগুলোর memory ফেরত নেয় — programmer-এর free() ছাড়াই।

সংজ্ঞাটা reachability-র — “কেউ পৌঁছাতে পারে না” ≠ “কেউ দরকার নেই”, তাই GC কখনো liveness জানে না, শুধু reachability মাপে:

roots (stack, globals, registers)
  └── যা যা pointer-এ পৌঁছায় = live
      বাকি সব = garbage
  • Tracing (mark-sweep, copying): roots থেকে graph traverse — cycle-এ অন্ধ না
  • Reference counting: প্রতি object-এ counter — cycle ধরতে পারে না
  • Trade-off: manual free-এর deterministic মুক্তি বনাম GC-র pause আর বেশি peak memory
  • C-তেও GC বানানো যায় (Boehm); ভাষার বৈশিষ্ট্য না, runtime-এর