Junior
Ինչպես է աշխատում գարշահավաքը JavaScript-ում?
sobes.tech AI
Պատասխան AI-ից
JavaScript- ում աղբարկղը աշխատում է ավտոմատ, հայտնաբերելով այն օբյեկտները, որոնք այլևս հասանելի չեն հասանելի արմատներից (գլոբալ օբյեկտ, ընթացիկ ֆունկցիայի կանչ և այլն), և ազատելով նրանց զբաղեցրած հիշողությունը:
Հիմնական մեխանիզմներ՝
- Հղման հաշվիչ: Հին մեթոդ, որը հաշվում է օբյեկտի վրա հղումների քանակը: Հիշողությունը ազատվում է, երբ հաշվիչը հասնում է զրոյի: Թերություն՝ չի կարող մշակել ցիկլային հղումները:
- Նշում և մաքառում: Ժամանակակից և ամենատարածված մեթոդ:
- Նշում: Սկսելով արմատներից, աղբարկղը ռեկուրսիվ անցնում է օբյեկտների գրաֆը և նշում բոլոր հասանելի օբյեկտները:
- Մաքառում: Գնացք է անցնում հողամասով և հեռացնում բոլոր այն օբյեկտները, որոնք չեն նշվել որպես հասանելի:
"Նշում և մաքառում"-ի առավելությունը՝ այն ճիշտ է մշակել ցիկլային հղումները:
JavaScript շարժիչը (օրինակ՝ V8 Chrome-ում) մշտապես հետևում է հիշողության օգտագործմանը և անհրաժեշտության դեպքում գործարկում է աղբարկղը: Ծրագրավորողը չի կարող ուղղակիորեն վերահսկել այս գործընթացը, բայց կարող է անուղղակիորեն ազդել, խուսափելով անպետք հղումներից և կառավարելով բարդ օբյեկտների կյանքի ցիկլը։