রেফারেন্স-কাউন্টিং গারবেজ কালেকশন (Reference-counting garbage collection)
এটি সবচেয়ে সহজ গারবেজ কালেকশন অ্যালগরিদম। এটি সেসব অবজেক্ট খুঁজে বের করে যাদের আর কোনো রেফারেন্স নেই। একটি অবজেক্ট গারবেজ কালেকশনের যোগ্য হয় যদি তার সাথে কোনো রেফারেন্স অ্যাটাচড না থাকে। নিচের উদাহরণে গারবেজ কালেকশন ব্যাখ্যা করা হলো।
উদাহরণ
var obj = { x: { y: 2 } }; // 2 objects created. One is referenced by the other as one of its properties. // Obviously, none can be garbage-collected obj = 1; // what was the 'x' property of the object originally in obj // has zero references to it. It can be garbage collected.
সীমাবদ্ধতা
সাইকেল (cycles) হলে রেফারেন্স-কাউন্টিং গারবেজ কালেকশনে সীমাবদ্ধতা আছে, যা নিচের উদাহরণে ব্যাখ্যা করা হলো।
উদাহরণ
নিচের উদাহরণে, দুটি অবজেক্ট তৈরি করা হয়েছে এবং একে অপরের রেফারেন্স রাখা হয়েছে, ফলে একটি সাইকেল তৈরি হয়েছে। ফাংশন কলের পর তারা স্কোপের বাইরে চলে যাবে, তাই সেগুলো কার্যকরভাবে অপ্রয়োজনীয় এবং ফ্রি করা যেতে পারে। কিন্তু রেফারেন্স-কাউন্টিং অ্যালগরিদম মনে করে যেহেতু দুটি অবজেক্টই কমপক্ষে একবার রেফারেন্সড, তাই কোথাও গারবেজ-কলেক্ট করা যাবে না।
function f() { var obj1 = {}; var obj2 = {}; obj1.p = obj2; // o1 references o2 obj2.p = obj1; // o2 references o1. This creates a cycle. } f();