Sobes.tech
Junior — Middle

Чӣ гуна ҷамъкунандаи партов кор мекунад ва кадом минтақаҳои хотираро тоза мекунад: heap ё stack?

sobes.tech AI

Ҷавоб аз AI

در Go، جمع‌آورنده زباله (Garbage Collector) به طور خودکار حافظه‌ای را که دیگر توسط برنامه استفاده نمی‌شود، آزاد می‌کند. این سیستم با منطقه حافظه heap کار می‌کند، جایی که اشیاء به صورت دینامیک تخصیص یافته قرار می‌گیرند.

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

اصل کار جمع‌آورنده زباله در Go بر اساس الگوریتم ردیابی دسترسی است: آن تمام اشیاء قابل دسترسی از نقاط ریشه (پشته، متغیرهای سراسری) را پیدا می‌کند و آن‌هایی را که به آن‌ها ارجاعی نیست، حذف می‌کند.

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