![cover image](https://wikiwandv2-19431.kxcdn.com/_next/image?url=https://upload.wikimedia.org/wikipedia/commons/thumb/5/5e/Dsss.gif/640px-Dsss.gif&w=640&q=50)
بازیافت حافظه
From Wikipedia, the free encyclopedia
در علوم رایانه بازیافت حافظه یا زبالهروبی (به انگلیسی: Garbage collection) نوعی مدیریت حافظهٔ خودکار است. این حالت خاصی از مدیریت منابع است و منبع محدودی که مدیریت میشود، حافظه است. زبالهروبی تلاشی برای بازیافت قطعات کوچک حافظه و ادغام آنها است که این حافظهها قبلاْ توسط اشیاء به کار گرفته شدهاند، ولی دیگر مورد نیاز برنامه نیستند. تکنیک بازیافت حافظه توسط جان مککارتی در حدود سال ۱۹۵۹ برای حل مشکلات لیسپ اختراع شدهاست.[1][2]
![Thumb image](http://upload.wikimedia.org/wikipedia/commons/thumb/5/5e/Dsss.gif/640px-Dsss.gif)
بازیافت حافظه معمولاْ به عنوان جنبهٔ مخالف مدیریت دستی حافظه بیان میشود که در آن آزادسازی هر شی از حافظه به صورت دستی انجام و توسط برنامهنویس مشخص میشود.
مانند سایر تکنیکهای مدیریت حافظه، بازیافت حافظه میزان قابل توجهی از زمان کل اجرای یک برنامه را شامل میشود، در نتیجه میتواند تأثیر قابل توجهی روی کارایی برنامه داشته باشد. با استفاده از یک پیادهسازی مناسب، حافظهٔ کافی و با توجه به کاربرد، بازیافت حافظه میتواند سریعتر از مدیریت دستی حافظه باشد. درحالی که مدیریت دستی حافظه در گذشته با استفاده از الگوریتمهای غیر بهینهٔ پاکسازی حافظه، یک راه حل بودهاست.
همچنین منابع خاص دیگری به غیر از حافظه مانند سوکتهای شبکه، پایگاههای داده و فایلها بهطور معمول با تکنیک زبالهروبی مدیریت نمیشوند. روشهایی که برای مدیریت چنین منابعی استفاده میشود، به خصوص مخربها، ممکن است برای مدیریت حافظه کافی باشند و نیازی به استفاده از روش زباله روبی نباشد.