Reference Counting
রেফারেন্স কাউন্টিং
প্রতিটা object-এ 'কজন জানে' গুনে রাখা — count শূন্য হলেই সঙ্গে সঙ্গে মুক্ত; GC-র deterministic কিন্তু cycle-অন্ধ রূপ।
obj->refcount++; // retain / assignment
if (--obj->refcount == 0) // release
free_object(obj); /* recursive free — chain গিয়ে যায় */
- Deterministic: finalization-এর মুহূর্ত জানা — file/socket close-এর জন্য চমৎকার (CPython-এর
__del__) - Cycle মোকাবেলা করতে পারে না:
a.b = b; b.a = a— দুজনের count ১-এ আটকে - প্রতি assignment-এ overhead + multi-threaded-এ atomic increment-এর দাম
- Fix: cycle detector মাঝে মাঝে চালানো (CPython), বা weak reference