কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে গার্বেজ কালেকশন (GC)


গার্বেজ কালেকশন (GC) হলো অটোমেটিক মেমরি ম্যানেজমেন্টের একটি রূপ। গার্বেজ কালেক্টর, বা শুধু কলেক্টর, গার্বেজ রিক্লেইম করার চেষ্টা করে, অর্থাৎ প্রোগ্রাম দ্বারা আর ব্যবহৃত নয় এমন অবজেক্ট által অধিকৃত মেমরি। স্বয়ংক্রিয়ভাবে খুঁজে বের করা যে কোনো মেমরি "আর দরকার নেই" সেটা অনির্ধার্য। ফলস্বরূপ, গার্বেজ কলেক্টরস সমস্যার একটি সীমাবদ্ধ সমাধান ইমপ্লিমেন্ট করে।

গার্বেজ কালেকশন অ্যালগরিদম যা উপর নির্ভর করে সেটা হলো রেফারেন্সের কনসেপ্ট। মেমরি ম্যানেজমেন্টের প্রসঙ্গে, একটি অবজেক্ট বলা হয় অন্য একটি অবজেক্টকে রেফারেন্স করছে যদি সেটাতে সেটি এক্সেস থাকে (নিঃশব্দ বা স্পষ্টভাবে)।

উদাহরণ

let a = [] function addToA() { let x = {name: "John"} a.push(x) } console.log(a[0])

আউটপুট

{name: "John"}

লক্ষ্য করুন যে x আর স্কোপে নেই কিন্তু a ব্যবহার করে এখনও এক্সেসযোগ্য। এর মানে এটি মেমরিতে থাকতে হবে যতক্ষণ না এর রেফারেন্স থাকে। আমরা যদি এটি অ্যারে থেকে পপ করি, তবে আর দরকার নেই এবং এটি গার্বেজ কালেক্টেড হতে পারে।

গার্বেজ কলেক্টর নিম্নলিখিত অ্যালগরিদম ব্যবহার করে -

১. রেফারেন্স-কাউন্টিং গার্বেজ কালেকশন − একটি অবজেক্ট "গার্বেজ" বা সংগ্রহণযোগ্য বলে মনে করা হয় যদি শূন্য রেফারেন্স সেটাকে পয়েন্ট করে। এটি পুরনো ব্রাউজারগুলিতে ব্যবহৃত হতো। কিন্তু এটি সার্কুলার রেফারেন্সিং অবজেক্টের সাথে সমস্যা তৈরি করে কারণ সেগুলো সংগ্রহ করা যায় না (অন্য অবজেক্ট থেকে সবসময় একটি রেফারেন্স থাকে।)

২. মার্ক-অ্যান্ড-স്വিপ অ্যালগরিদম − এই অ্যালগরিদম "একটি অবজেক্ট আর দরকার নেই" এর ডেফিনিশনকে "একটি অবজেক্ট অরিয়achable নয়" এ রিডিউস করে। এই অ্যালগরিদম কিছু রুট অবজেক্টের নলেজ অনুমান করে। জাভাস্ক্রিপ্টে, রুট হলো গ্লোবাল অবজেক্ট। পিরিয়ডিক্যালি, GC এই রুট থেকে শুরু করে, এই রুট থেকে রেফারেন্স করা সব অবজেক্ট খুঁজে বের করে, রিকার্সিভলি। রুট থেকে শুরু করে, GC এইভাবে সব রিচেয়achable অবজেক্ট খুঁজে পায় এবং নন-রিচেয়achable অবজেক্টগুলো কালেক্ট করে।

জাভাস্ক্রিপ্টে GC সম্পর্কে আরও জানতে https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management দেখুন।


  1. জাভাস্ক্রিপ্টে Map অবজেক্ট

  2. জাভাস্ক্রিপ্টে Blob অবজেক্ট

  3. জাভাস্ক্রিপ্টে RegExp অবজেক্ট

  4. জাভাস্ক্রিপ্টে অবজেক্ট ইলিশিয়ালাইজার