ScholarGate
دستیار

جمع‌آوری زباله و مدیریت حافظه

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

یافتن موضوع با PaperMindبه‌زودیFind papers & topics
Tools & resources
دریافت اسلایدها
Learn & explore
ویدیوبه‌زودی

Definition

مدیریت حافظه عبارت است از تخصیص و بازپس‌گیری حافظه یک برنامه؛ جمع‌آوری زباله بازپس‌گیری خودکاری است که حافظه اشغال شده توسط اشیایی را که برنامه دیگر نمی‌تواند به آن‌ها دسترسی پیدا کند، آزاد می‌کند و برنامه‌نویس را از آزادسازی صریح بی‌نیاز می‌سازد.

Scope

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

Core questions

  • یک جمع‌آوری‌کننده چگونه تعیین می‌کند که کدام اشیاء هنوز مورد نیاز هستند؟
  • مبادلات بین توان عملیاتی، تأخیر، و ردپای حافظه چیست؟
  • چرا جداسازی اشیاء بر اساس سن (جمع‌آوری نسلی) کارایی را بهبود می‌بخشد؟
  • چگونه جمع‌آوری می‌تواند از توقف‌های طولانی در سیستم‌های تعاملی یا بلادرنگ جلوگیری کند؟

Key theories

جمع‌آوری زباله ردیابی
مک‌کارتی جمع‌آوری خودکار زباله را برای لیسپ معرفی کرد و ایده بازپس‌گیری حافظه با ردیابی اینکه کدام اشیاء از ریشه‌های برنامه قابل دسترسی هستند را پایه‌گذاری کرد.
جمع‌آوری نسلی
لیبرمن و هیویت مشاهده کردند که بیشتر اشیاء در سنین پایین از بین می‌روند و پیشنهاد کردند که نسل‌های جوان‌تر را با تناوب بیشتری جمع‌آوری کنند، که به طور چشمگیری هزینه جمع‌آوری را در عمل کاهش می‌دهد (فرضیه نسلی).
طبقه‌بندی تکنیک‌های جمع‌آوری
ویلسون و کتاب راهنمای جمع‌آوری زباله فضای طراحی شمارش ارجاع، علامت‌گذاری-جاروب، کپی‌برداری، جمع‌آوری‌کننده‌های افزایشی و همزمان و مبادلات عملکردی آن‌ها را سازماندهی می‌کنند.

Clinical relevance

مدیریت خودکار حافظه کل کلاس‌هایی از باگ‌ها مانند اشاره‌گرهای آویزان و نشت حافظه را از بین می‌برد، به همین دلیل است که اکثر زبان‌های سطح بالا به جمع‌آوری زباله متکی هستند. انتخاب جمع‌آوری‌کننده به شدت بر تأخیر و توان عملیاتی برنامه، به ویژه برای سیستم‌های تعاملی و سرور، تأثیر می‌گذارد.

History

مک‌کارتی جمع‌آوری زباله را با لیسپ در سال 1960 معرفی کرد. جمع‌آوری کپی‌برداری (چنی) و شمارش ارجاع به دنبال آن آمدند، و جمع‌آوری‌کننده نسلی لیبرمن و هیویت در سال 1983 از طول عمر اشیاء بهره‌برداری کرد. دهه‌های بعدی جمع‌آوری‌کننده‌های افزایشی، همزمان، و مبتنی بر منطقه را تولید کردند که به طور جامع در کار ویلسون در سال 1992 و کتاب راهنمای جمع‌آوری زباله در سال 2011 بررسی شده‌اند.

Debates

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

Key figures

  • John McCarthy
  • Henry Lieberman
  • Carl Hewitt
  • Richard Jones
  • Paul Wilson

Related topics

Seminal works

  • mccarthy1960
  • lieberman1983
  • wilson1992
  • jones2011

Frequently asked questions

یک جمع‌آوری‌کننده زباله چگونه می‌داند کدام اشیاء را آزاد کند؟
یک جمع‌آوری‌کننده ردیابی از ریشه‌های شناخته شده، مانند متغیرهای پشته و سراسری، شروع می‌کند و ارجاعات را دنبال می‌کند تا تمام اشیاء قابل دسترسی را علامت‌گذاری کند؛ هر چیزی که قابل دسترسی نباشد، غیرقابل دسترسی است و می‌تواند بازپس گرفته شود.
چرا جمع‌آوری زباله نسلی مؤثر است؟
زیرا بیشتر اشیاء بلافاصله پس از تخصیص غیرقابل دسترسی می‌شوند، جمع‌آوری مکرر نسل جوان بیشتر زباله‌ها را با هزینه کم بازپس می‌گیرد در حالی که اشیاء قدیمی‌تر و با عمر طولانی‌تر بسیار کمتر اسکن می‌شوند.

Methods for this concept

Related concepts