برنامه نویسی

جمع آوری زباله – انجمن DEV

وقتی چیزی دیگر مورد نیاز نباشد چه اتفاقی می افتد؟ چگونه موتور جاوا اسکریپت آن را کشف و پاک می کند؟

قابلیت دسترسی

مفهوم اصلی مدیریت حافظه در جاوا اسکریپت است reachability.
یک مجموعه پایه از مقادیر ذاتا قابل دسترسی وجود دارد که به دلایل واضح نمی توان آنها را حذف کرد.
برای مثال:

  1. تابع در حال اجرا، متغیرها و پارامترهای محلی آن.
  2. سایر توابع در زنجیره فعلی تماس های تودرتو، متغیرها و پارامترهای محلی آنها.
  3. متغیرهای جهانی

These values are called roots.

هر مقدار دیگری در صورتی قابل دسترسی در نظر گرفته می شود که از ریشه توسط یک مرجع یا زنجیره ای از مراجع قابل دسترسی باشد. یک فرآیند پس زمینه در موتور جاوا اسکریپت وجود دارد که به آن زباله گرد می گویند. همه اشیاء را کنترل می کند و آنهایی را که غیرقابل دسترس شده اند حذف می کند.

بیایید شیرجه بزنیم و بفهمیم که چگونه کار می کند

مثال

// user has a reference to the object
let user = {
  name: "John"
};
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

تصویر نحوه کار جمع آوری زباله را توضیح می دهد

و اگر مقدار کاربر بازنویسی شود، مرجع از بین می رود:

تصویر توضیح می‌دهد که چگونه مجموعه زباله‌ها عناصر غیرقابل دسترس را تمیز می‌کند

حالا جان دست نیافتنی می شود. هیچ راهی برای دسترسی به آن وجود ندارد، اما اگر مرجع را از کاربر به مدیر کپی کنیم و مقدار را بازنویسی کنیم

سپس شی همچنان از طریق متغیر جهانی admin قابل دسترسی است.

علامت گذاری و جارو کردن

الگوریتم جمع آوری زباله “مارک و جارو” نامیده می شود.
و این مراحل به طور منظم انجام می شود:

  1. زباله جمع کن ریشه می اندازد و آنها را علامت گذاری می کند (به یاد می آورد).
    مراحل زباله جمع کن

  2. سپس همه مراجع را از آنها بازدید و “علامت گذاری” می کند.

مراحل زباله جمع کن

  1. و به همین ترتیب تا زمانی که همه مراجع قابل دسترسی بازدید شوند.

مراحل زباله جمع کن

  1. تمام اشیاء به جز موارد علامت گذاری شده حذف می شوند.

مراحل زباله جمع کن

خلاصه

  1. متغیرهای سراسری ریشه در نظر گرفته می شوند، بنابراین هنگام اعلام یا ارجاع آنها به آنها توجه داشته باشید.
  2. مراجع خروجی مهم نیست. فقط موارد ورودی می توانند یک شی را قابل دسترس کنند.

می‌توانید بیشتر بیاموزید و نمونه‌های پیچیده‌تری را در آن بررسی کنید
اطلاعات جاوا اسکریپت

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا