این راهنما درباره نحوه انجام مدیریت منابع (Resource Management) در جاوااسکریپت صحبت میکند. مدیریت منابع دقیقاً همان مدیریت حافظه (Memory Management) نیست؛ مدیریت حافظه یک مبحث پیشرفتهتر است و معمولاً به طور خودکار توسط خودِ موتور جاوااسکریپت هندل میشود.
در نقطه مقابل، مدیریت منابع درباره مدیریت و کنترل آن دسته از منابعی است که جاوااسکریپت به صورت خودکار آنها را پاکسازی نمیکند. گاهی اوقات، وجود چند شیء بلااستفاده در حافظه مشکل خاصی ایجاد نمیکند، چون تداخلی در منطق برنامه به وجود نمیآورند؛ اما نشت منابع (Resource Leaks) اغلب منجر به کار نکردن بخشهایی از برنامه یا مصرف بیش از حد و سرسامآور حافظه میشود. بنابراین، مدیریت منابع یک ویژگی اختیاری برای بهینهسازی کد نیست، بلکه یک قابلیت اصلی و حیاتی برای نوشتن برنامههای درست و بدون باگ است!
رابطه مدیریت حافظه و مدیریت منابع
📌 نکته: با اینکه مدیریت حافظه و مدیریت منابع دو مبحث کاملاً مجزا و متفاوت هستند، اما گاهی اوقات میتوانید به عنوان آخرین راهکار (Last resort)، به سیستم مدیریت حافظه متصل شوید تا کار مدیریت منابع را انجام دهید.
به عنوان مثال، اگر یک شیء جاوااسکریپتی داشته باشید که نشاندهنده یک هندل یا شناسه از یک منبع خارجی (External Resource) باشد، میتوانید یک FinalizationRegistry بسازید تا وقتی آن هندل توسط فرآیند زبالهروبی (Garbage Collection) از حافظه پاک شد، آن منبع خارجی را هم پاکسازی کند؛ چون بعد از حذف آن هندل، قطعاً هیچ راه دیگری برای دسترسی به آن منبع وجود نخواهد داشت.
با این حال، هیچ تضمین قطعی وجود ندارد که تابع نهاییساز (Finalizer) حتماً اجرا شود! به همین دلیل، اصلاً ایده خوبی نیست که برای منابع حیاتی و حساس برنامه، به این روش تکیه کنید.
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: https://developer.mozilla.org/en-US/docs/Web/JavaScript