Middle
Ինչ է աղբահանության հավաքողը և ինչպես է աշխատում?
sobes.tech AI
Պատասխան AI-ից
Ջնջատու (Garbage Collector, GC) — դա ավտոմատ հիշողության կառավարում մեխանիզմ է, որը հատկացնում և ազատում է հիշողությունը, որը ծրագրի կողմից այլևս չի օգտագործվում:
Աշխատանքի սկզբունքը՝
- Հիշողության հատկացում: Երբ ծրագիրը ստեղծում է օբյեկտներ, ջնջատուն նրանց համար հատկացնում է տեղ heap-ում:
- Հասանելիության որոշում: Ջնջատուն որոշում է, թե որ օբյեկտները հասանելի են ծրագրի "արմատներից" (root): Արմատները կարող են լինել տեղական փոփոխականներ ընթացող ֆունկցիաներում, ստատիկ փոփոխականներ, հղումներ թելերից և այլն:
- Ջնջատման գործընթաց: Օբյեկտները, որոնք չեն հասանելի արմատներից, համարվում են "մոխրակույտ" և նրանց հիշողությունը կարող է ազատվել:
Տարբեր ալգորիթմներ կան, օրինակ՝
- Mark-and-Sweep (նշում և մաքուր): Ջնջատուն անցնում է հասանելի օբյեկտների գրաֆը, նշում է դրանք: Այնուհետև անցնում է ամբողջ heap-ը և ազատում նշված օբյեկտների հիշողությունը:
- Կոպիային: Heap-ը բաժանվում է երկու մասի: Հասանելի օբյեկտները պատճենվում են մեկ մասից մյուսը, իսկ հին մասը մաքրվում է:
- Ամենագեներացիոն: Օբյեկտները բաժանվում են սերունդների: Նոր օբյեկտները մտնում են երիտասարդ սերունդ, հիները՝ հասուն: Ջնջատման գործընթացը հաճախակի է երիտասարդ սերունդում, քանի որ մեծ մասը օբյեկտների կարճ կյանք ունի:
Օրինակ՝ Java-ում (պարզեցված)
// Ծրագիրը ստեղծում է օբյեկտներ heap-ում
Object obj1 = new Object();
Object obj2 = new Object();
// obj1 դառնում է անհասանելի
obj1 = null;
// Ջնջատուն կարող է ազատել obj1-ի զբաղեցրած հիշողությունը