بازیافت حافظه
قابلیت استفاده

به‌طور کلی بیشتر زبان‌های برنامه‌نویسی سطح بالا، بازیافت حافظه را به عنوان ویژگی استاندارد دارا هستند. در برخی دیگر از زبان‌ها نیز می‌توان با استفاده از کتابخانه‌ها این ویژگی را اضافه کرد. مانند زباله‌روب Boehm در زبان‌های C و ++C.
بیشتر زبان‌های برنامه‌نویسی تابعی مثل ML و Haskell و APL دارای ساختار زباله‌روب هستند. همچنین لیسپ نیز به عنوان اولین زبان برنامه‌نویسی تابعی و نیز اولین زبان با قابلیت بازیافت حافظه قابل توجه است.
زبان‌های برنامه‌نویسی شئ‌گرا نیز معمولاً از زباله‌روب یکپارچه استفاده می‌کنند. هرچند ساختار آن برای Delphi و ++C متفاوت است.


محیط محدود


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


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


استفادهٔ زمان کامپایل


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


سیستم‌های زمان واقعی


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


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


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


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