Sobes.tech
Middle

Ինչ է աղբահանության հավաքողը և ինչպես է աշխատում?

sobes.tech AI

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

Ջնջատու (Garbage Collector, GC) — դա ավտոմատ հիշողության կառավարում մեխանիզմ է, որը հատկացնում և ազատում է հիշողությունը, որը ծրագրի կողմից այլևս չի օգտագործվում:

Աշխատանքի սկզբունքը՝

  1. Հիշողության հատկացում: Երբ ծրագիրը ստեղծում է օբյեկտներ, ջնջատուն նրանց համար հատկացնում է տեղ heap-ում:
  2. Հասանելիության որոշում: Ջնջատուն որոշում է, թե որ օբյեկտները հասանելի են ծրագրի "արմատներից" (root): Արմատները կարող են լինել տեղական փոփոխականներ ընթացող ֆունկցիաներում, ստատիկ փոփոխականներ, հղումներ թելերից և այլն:
  3. Ջնջատման գործընթաց: Օբյեկտները, որոնք չեն հասանելի արմատներից, համարվում են "մոխրակույտ" և նրանց հիշողությունը կարող է ազատվել:

Տարբեր ալգորիթմներ կան, օրինակ՝

  • Mark-and-Sweep (նշում և մաքուր): Ջնջատուն անցնում է հասանելի օբյեկտների գրաֆը, նշում է դրանք: Այնուհետև անցնում է ամբողջ heap-ը և ազատում նշված օբյեկտների հիշողությունը:
  • Կոպիային: Heap-ը բաժանվում է երկու մասի: Հասանելի օբյեկտները պատճենվում են մեկ մասից մյուսը, իսկ հին մասը մաքրվում է:
  • Ամենագեներացիոն: Օբյեկտները բաժանվում են սերունդների: Նոր օբյեկտները մտնում են երիտասարդ սերունդ, հիները՝ հասուն: Ջնջատման գործընթացը հաճախակի է երիտասարդ սերունդում, քանի որ մեծ մասը օբյեկտների կարճ կյանք ունի:

Օրինակ՝ Java-ում (պարզեցված)

// Ծրագիրը ստեղծում է օբյեկտներ heap-ում
Object obj1 = new Object();
Object obj2 = new Object();

// obj1 դառնում է անհասանելի
obj1 = null;

// Ջնջատուն կարող է ազատել obj1-ի զբաղեցրած հիշողությունը