اصطلاح Garbage Collection از ترکیب ۲ واژهٔ Garbage (زباله) و Collection (جمعآوری) ایجاد شده است؛ به طور کلی، Garbage Collection یا به اختصار GC به فرآیند بازیافت خودکار فضای مشترک حافظهٔ کامپیوتر اطلاق میشود.
در طی این فرآیند، فضایی از حافظهٔ کامپیوتر که قبلاً درگیر نگهداری دیتای مورد نیاز یک برنامهٔ کامپیوتری بوده و اکنون آن برنامه دیگر نیازی به این دیتا ندارد، آزاد شده و برای ذخیره و نگهداری دیتای جدید مورد استفاده قرار میگیرد. همچنین این فرآیند سبب میشود تا برنامهٔ در حال اجرا، تمام حجم حافظهٔ از پیش تعیین شدهٔ مخصوص خود را درگیر نکند (زیرا اگر تمام فضای در نظر گرفته شده برای یک برنامه درگیر شود، ادامهٔ اجرای آن برنامه عملاً امکانپذیر نخواهد بود).
لازم به ذکر است که در زبانهای برنامهنویسی قدیمیتر مانند C و ++C، تخصیص و آزادسازی حافظه به صورت دستی و توسط برنامهنویس صورت میگیرد؛ در این دست زبانها، انجام گاربج کالکشن به این شکل است که اگر در یک برنامه نگهداری دیتای مشخصی ضروری نباشد، برنامهنویس با فراخوانی یک API، حافظهٔ اختصاص داده شده به محل نگهداری آن دیتا را آزاد میکند و به این ترتیب فضای مورد نیاز برای ذخیرهٔ دیتای جدید را فراهم مینماید (لازم به ذکر است از آنجا که این نوع مدیریت حافظه مستلزم دخالت مستقیم برنامهنویس است، احتمال بروز خطاهای انسانی در آن وجود دارد).
در بسیاری از زبانهای برنامهنویسی مدرن مانند Java و فریمورک NET. مایکروسافت، فرآیند Garbage Collection به عنوان یک فیچر مدیریت حافظهٔ خودکار در نظر گرفته شده است؛ چنین زبانهایی معمولاً در یک ماشین مجازی، مثلاً JVM یا ماشین مجازی جاوا، تفسیر و اجرا میشوند و همین ماشین مجازی است که انجام فرآیند Garbage Collection را نیز بر عهده دارد.
در برخی از زبانهای برنامهنویسی دیگر، علاوه بر انجام خودکار این فرآیند، این امکان نیز وجود دارد که در صورت نیاز برنامهنویس نیز به صورت مستقیم در مدیریت حافظه دخالت داشته باشد تا بسته به شرایط مختلف بتواند فرایند مدیریت حافظه را شخصیسازی (کاستومایز) کند.