কম্পিউটার

জাভাস্ক্রিপ্টে আবর্জনা সংগ্রহ (জিসি)?


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

আবর্জনা সংগ্রহের অ্যালগরিদমগুলি যে প্রধান ধারণার উপর নির্ভর করে তা হল রেফারেন্সের ধারণা। মেমরি ম্যানেজমেন্টের প্রেক্ষাপটে, একটি বস্তুকে অন্য বস্তুর উল্লেখ করতে বলা হয় যদি পূর্ববর্তীটির পরবর্তীতে অ্যাক্সেস থাকে (হয় নিহিতভাবে বা স্পষ্টভাবে)।

উদাহরণ

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

আউটপুট

{name: "John"}

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

আবর্জনা সংগ্রহকারীরা নিম্নলিখিত অ্যালগরিদমগুলি ব্যবহার করে কাজ করে -

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

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

আপনি https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management

এ জাভাস্ক্রিপ্টে GC সম্পর্কে আরও পড়তে পারেন
  1. জাভাস্ক্রিপ্টে ম্যাপ অবজেক্ট।

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

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

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