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

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