جستجو برای:
  • خانه
  • دوره و کتاب
  • مقالات
    • خانواده جاوا اسکریپت
      • مقالات جاوا اسکریپت
      • مقالات ری اکت و نکست
      • هوش مصنوعی
    • خانواده فرانت
      • مقالات سی اس اس
      • مقالات اچ تی ام ال
    • محیط کار
      • سوالات استخدامی جاوا اسکریپت
      • سوالات استخدامی ری اکت
      • اصطلاحات محیط کار فرانت اند
    • مجله پرنیان
      • تصاویر دوره ها
      • نظرات دانشجویان قدیم
  • سوالات متداول
  • تماس با ما
  • خانواده پرنیان
    • چت خانه
    • دستیار هوش مصنوعی(رایگان!)
    • تایید مدارک
    • پیام یا انتقاد (ناشناس)
    • تعیین سطح زبان انگلیسی
    • پخش لایو رادیوسام
 
  • 09921632445
  • radioarsam[at]gmail.com
  • فروشگاه محصولات
  • بلاگ
  • تماس با ما
  • درباره پارسا قربانیان، موسس مدرسه پرنیان
پارسا قربانیان |گروه آموزشی پرنیان | آموزش حرفه ای طراحی سایت
  • خانه
  • دوره و کتاب
  • مقالات
    • خانواده جاوا اسکریپت
      • مقالات جاوا اسکریپت
      • مقالات ری اکت و نکست
      • هوش مصنوعی
    • خانواده فرانت
      • مقالات سی اس اس
      • مقالات اچ تی ام ال
    • محیط کار
      • سوالات استخدامی جاوا اسکریپت
      • سوالات استخدامی ری اکت
      • اصطلاحات محیط کار فرانت اند
    • مجله پرنیان
      • تصاویر دوره ها
      • نظرات دانشجویان قدیم
  • سوالات متداول
  • تماس با ما
  • خانواده پرنیان
    • چت خانه
    • دستیار هوش مصنوعی(رایگان!)
    • تایید مدارک
    • پیام یا انتقاد (ناشناس)
    • تعیین سطح زبان انگلیسی
    • پخش لایو رادیوسام
0

ورود و ثبت نام

بلاگ پرنیان

پارسا قربانیان |گروه آموزشی پرنیان | آموزش حرفه ای طراحی سایتبلاگمقالاتمقالات جاوا اسکریپتGarbage Collection در JavaScript: راهنمای کامل

Garbage Collection در JavaScript: راهنمای کامل

16 نوامبر 2025
ارسال شده توسط مدیریت
بلاگ پرنیان ، مقالات ، مقالات جاوا اسکریپت
60 بازدید
Garbage Collection در JavaScript

JavaScript یکی از زبان‌هایی است که مدیریت حافظه را به‌صورت خودکار انجام می‌دهد. این ویژگی، کار توسعه‌دهندگان را ساده‌تر می‌کند اما باعث نمی‌شود که نگرانی در مورد حافظه از بین برود. اگر یک برنامه JavaScript به‌درستی مدیریت نشود، Memory Leak‌ها یا کند شدن برنامه کاملاً ممکن است.
در این راهنمای جامع، مکانیزم Garbage Collection (GC) در JavaScript را از صفر تا صد بررسی می‌کنیم.

بخش 1 — حافظه در JavaScript چگونه کار می‌کند؟

تخصیص حافظه (Memory Allocation)

وقتی یک متغیر، آبجکت، آرایه یا تابع ایجاد می‌کنید، JavaScript باید جایی در حافظه برای آن رزرو کند:

let user = { name: "Parsa" };

در این لحظه:

  • یک آبجکت در Heap ساخته می‌شود
  • یک رفرنس به این آبجکت در Stack ذخیره می‌شود

وقتی داده‌ها را بخوانید، مقدار جدید بدهید یا یک متد فراخوانی کنید، JavaScript با داده در حافظه تعامل دارد.

وقتی داده‌ای دیگر استفاده نمی‌شود، باید از حافظه حذف شود.
اینجا Garbage Collector وارد عمل می‌شود.

بخش 2 — چرا به Garbage Collection نیاز داریم؟

در زبان‌هایی مثل C یا C++، برنامه‌نویس باید حافظه را دستی آزاد کند.
اما در JavaScript:

  • این کار خودکار است
  • موتور JavaScript تشخیص می‌دهد چه داده‌ای «دیگر لازم نیست»
  • سپس آن را از حافظه حذف می‌کند

این حذف خودکار باعث جلوگیری از:

  • انباشته شدن حافظه
  • کند شدن مرورگر
  • Memory Leak
  • Crash شدن اپلیکیشن

می‌شود.

آیا میدانید مدرسه فرانت اند پرنیان، دوره آموزش فرانت اند از صفر تا صد را بصورت حرفه ای برگزار میکند؟

بخش 3 — ساختار حافظه در JavaScript

JavaScript از دو بخش اصلی حافظه استفاده می‌کند:

3.1 Stack

برای داده‌های ساده و سریع:

  • Number
  • Boolean
  • Null
  • Undefined
  • Reference به یک Object

3.2 Heap

برای ساختارهای پیچیده:

  • Object
  • Array
  • Function
  • Class Instance

دلیل وجود Heap: اندازه و ساختار آبجکت‌ها قابل پیش‌بینی نیست.

پیشنهاد میشود از مقاله حافظه هیپ و استک هم مطالعه بفرمایید.

بخش 4 — Garbage Collection چگونه کار می‌کند؟

JavaScript از الگوریتم‌های مختلف GC استفاده می‌کند اما اصلی‌ترین الگوریتم آن:

4.1 الگوریتم Reachability (قابلیت دستیابی)

این قانون ساده اما بسیار قدرتمند است:

«هر داده‌ای که قابلیت دسترسی داشته باشد، زنده است؛ هر داده‌ای که غیرقابل دسترسی باشد، حذف می‌شود.»

ریشه‌های قابل دسترس (Roots):

  • Global Object (مثل window یا globalThis)
  • متغیرهای global
  • Closure ها
  • Stack frames فعال

مثال:

let person = { name: "Parsa" };
person = null;

وقتی رفرنس حذف شود، آبجکت دیگر reachable نیست → GC آن را پاک می‌کند.

بخش 5 — الگوریتم Mark-and-Sweep

این معروف‌ترین روش Garbage Collection است.

5.1 مرحله Mark

GC تمام داده‌هایی که قابل دسترسی هستند را علامت‌گذاری می‌کند.

5.2 مرحله Sweep

GC داده‌های علامت‌گذاری نشده را حذف می‌کند.

نتیجه: حافظه آزاد می‌شود.

آیا میدانید مدرسه فرانت اند پرنیان، کلاس فرانت اند از صفر تا صد را بصورت حرفه ای برگزار میکند؟

بخش 6 — Memory Leak در JavaScript

Memory Leak یعنی داده‌ای در حافظه می‌ماند ولی دیگر استفاده نمی‌شود.

6.1 حالت‌های رایج Memory Leak

1) متغیرهای Global بی‌دلیل

leaked = "oops";

2) تایمرهای پاک نشده

setInterval(() => {}, 1000); // اگر clearInterval نشود → Memory Leak

3) رویدادهای ثبت‌شده بدون removeEventListener

4) کلوزرهای غیرضروری که متغیرهای سنگین را نگه می‌دارند

5) نگهداری آبجکت‌های بزرگ در Cache

حافظه به دو نسل تقسیم می‌شود:

Young Generation (نسل جوان)

  • داده‌های جدید
  • آزادسازی سریع
  • GC سبک و سریع

Old Generation (نسل قدیمی)

  • داده‌هایی که مدت طولانی در حافظه مانده‌اند
  • نیازمند GC سنگین‌تر

ایده: بیشتر آبجکت‌ها عمر کوتاه دارند → سریع پاک می‌شوند.

Garbage Collection در JavaScript یکی از مهم‌ترین بخش‌های داخلی زبان است که سرعت، کارایی و پایداری اپلیکیشن‌ها را تضمین می‌کند. دانستن نحوه کار GC، تشخیص Memory Leak و پیاده‌سازی Best Practiceها باعث می‌شود برنامه‌های جاوااسکریپت شما:

  • سریع‌تر
  • سبک‌تر
  • پایدارتر
  • و حرفه‌ای‌تر

اجرا شوند.

اگر پروژه‌های بزرگ React، Next.js، Vue یا Node.js دارید، مدیریت حافظه یکی از مهارت‌های ضروری است.

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

اشتراک گذاری:
درباره مدیریت

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

نوشته های بیشتر از مدیریت
در تلگرام
کانال ما را دنبال کنید!
در اینستاگرام
ما را دنبال کنید!
در یوتوب
ما را دنبال کنید!
Created by potrace 1.14, written by Peter Selinger 2001-2017
در آپارات
ما را دنبال کنید!

مطالب زیر را حتما مطالعه کنید

تفاوت HTMLCollection و NodeList در جاوا اسکریپت
تفاوت HTMLCollection و NodeList در جاوا اسکریپت
State Normalization در فرانت‌اند چیست؟
State Normalization در فرانت‌اند چیست؟
حفظ روحیه برنامه نویسان در شرایط جنگی
حفظ روحیه برنامه نویسان در شرایط جنگی
خبر فوری
اطلاعیه مهم درباره شروع کلاس ها
پارسا قربانیان | parsa ghorbanian
پایان دوره تهمتن
معرفی کتاب الگوریتم برنامه نویسی، زیر باران شهر
معرفی کتاب الگوریتم برنامه نویسی، زیر باران شهر
قدیمی تر پایان دوره بیست و چهارم
جدیدتر React Server Components (RSC) چیست؟

1 دیدگاه

به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.

  • ناهید صمدی گفت:
    12 دسامبر 2025 در 7:30 ق.ظ

    عالی بود ممنون از شما
    مرسی که کامل این موضوع را توضیح دادین
    با قدرت ادامه بدین

    پاسخ

دیدگاهتان را بنویسید لغو پاسخ

جستجو برای:
نوشته‌های تازه
  • تفاوت HTMLCollection و NodeList در جاوا اسکریپت
  • State Normalization در فرانت‌اند چیست؟
  • حفظ روحیه برنامه نویسان در شرایط جنگی
  • اطلاعیه مهم درباره شروع کلاس ها
  • پایان دوره تهمتن
دسته‌ها
دوره ها:

کلاس های درحال ثبت نام فرانت اند: 

  • دوره فرانت اند عصر از 23 تیرماه

دوره فرانت اند پارسا قربانیان

مدرسه فرانت اند پرنیان

گروه آموزشی پرنیان از سال 92 تاسیس شده و تاکنون ده ها دوره طراحی وب ، CMS ، سئو و بوت کمپ فرانت اند به صورت حضوری و غیر حضوری برگزار کرده است. ما در پرنیان جدیدترین و کاربردی ترین مباحث طراحی و توسعه وب ، سئو و دیجیتال مارکتینگ رو آموزش داده و راه ورود شما عزیزان به بازار کار را هموار کرده ایم.

فهرست سفارشی
  • بلاگ
  • تماس با ما
  • حساب کاربری من
  • درباره پارسا قربانیان، موسس مدرسه پرنیان
  • سبد خرید
  • فروشگاه

لوگوی مدرسه پرنیان

تمام حقوق برای مدرسه فرانت اند پرنیان محفوظ است. سیاست حفظ حریم شخصی

ورود

رمز عبور را فراموش کرده اید؟

هنوز عضو نشده اید؟ عضویت در سایت