Sobes.tech
Junior — Middle

Ինչպես է աշխատում գարշահավաքը և որ հիշողության տարածքները էապես մաքրում՝ heap կամ stack?

sobes.tech AI

Պատասխան AI-ից

Go-յի աղբահավաքիչը (Garbage Collector) ավտոմատ կերպով ազատում է այն հիշողությունը, որը ծրագրի կողմից այլևս չի օգտագործվում: Այն աշխատում է heap հիշողության տարածքի հետ, որտեղ տեղադրվում են դինամիկորեն տրամադրված օբյեկտները:

Stack-ը (stack) տեղական փոփոխականների և ֆունկցիայի կանչերի համար հիշողության տարածք է, որը ավտոմատ կերպով կառավարվում է ֆունկցիաների մուտքի և ելքի ժամանակ, և աղբահավաքիչը այն չի մաքրում:

Go-ում աղբահավաքիչի աշխատանքային սկզբունքը հիմնված է հասանելիության հետևման ալգորիթմի վրա. այն գտնում է բոլոր այն օբյեկտները, որոնք հասանելի են ռուտային կետերից (stack, գլոբալ փոփոխականներ), և հեռացնում է այն օբյեկտները, որոնց համար չկա հղում:

Այսպիսով, աղբահավաքիչը մաքրում է heap-ը, իսկ stack-ը կառավարում է կանչերի համակարգը և ինքնաբերաբար ազատվում է: