Junior
Ի՞նչ է գարշահավաքը (Garbage Collector) C#-ում։
sobes.tech AI
Պատասխան AI-ից
Ավտոմատ հիշողության կառավարումի մեխանիզմ, որը ազատում է այն հիշողությունը, որը զբաղեցրած է օբյեկտների կողմից, որոնց վրա այլ հղումներ չկան։ Սա կանխում է հիշողության արտահոսքերը և պարզեցնում է զարգացման գործընթացը։
Ճարպային հավաքիչի աշխատանքային սկզբունքները՝
- Օբյեկտների հետևում: Հստակեցնում է այն օբյեկտները, որոնք դեռ հասանելի են ռուտային հանգույցներից (ստատիկ դաշտեր, տեղական փոփոխականներ ստեկում):
- Ճարպային հավաքում: Եթե օբյեկտի վրա հղումներ չկան, ապա հավաքիչը նշում է այն հեռացման համար:
- Հիշողության ազատում: Ազատում է այն հիշողությունը, որը զբաղեցրած է հեռացված օբյեկտներով, և սեղմում մնացած հիշողությունը՝ նվազեցնելու համար ֆրագմենտացիան:
Օբյեկտների սերունդները՝
- 0-րդ սերունդ: Ունեցում է վերջերս ստեղծված, կարճաժամկետ օբյեկտներ։ Հավաքումը հաճախ է տեղի ունենում։
- 1-ին սերունդ: Ունեցում է այն օբյեկտներ, որոնք անցել են 0-րդ սերունդի հավաքումը։ Հավաքումը ավելի հազվադեպ է։
- 2-րդ սերունդ: Ունեցում է երկարաժամկետ օբյեկտներ։ Հավաքումը հազվադեպ է։
Պայմանական GC կանչ (նվազ օգտագործվում է և զգուշությամբ).:
// Պայմանական հավաքիչի կանչ
System.GC.Collect();
// Վերահսկում՝ սպասել մինչև վերջացնողների ավարտը
System.GC.WaitForPendingFinalizers();
.NET-ում հիմնական հավաքիչի մեխանիզմը նշման և սեղմման ալգորիթմն է։