Junior
რა არის გარბიჯის კოლექციონერი (Garbage Collector) C#-ში?
sobes.tech AI
პასუხი AI-სგან
ავტომატური მეხსიერების მართვის მექანიზმი, რომელიც თავისუფლდებს ობიექტების მიერ დაკავებულ მეხსიერებას, რომელთაც აღარ აქვთ მითითებები. ეს თავიდან აცილებს მეხსიერების ნაკადებს და ამარტივებს განვითარების პროცესს.
გროვის შეგროვებლის მუშაობის პრინციპები:
- ობიექტების მონიტორინგი: განსაზღვრავს ობიექტებს, რომლებიც ჯერ კიდევ ხელმისაწვდომია ძირეულ კვანძებიდან (სტატიკური ველები, ადგილობრივი ცვლადები სტეკზე).
- გროვის შეგროვება: თუ ობიექტზე არ არის მითითებები, გროვის შეგროვებელი მას აღნიშნავს წაშლისთვის.
- მეხსიერების გათავისუფლება: გათავისუფლებულია წაშლილი ობიექტების მიერ დაკავებული მეხსიერება და დარჩენილი მეხსიერება იწევს, რათა შემცირდეს ფრაგმენტაცია.
ობიექტების თაობები:
- 0-თაობა: შეიცავს ახლად შექმნილ და მოკლევადიან ობიექტებს. შეგროვება ხშირად ხდება.
- 1-თაობა: შეიცავს ობიექტებს, რომლებიც გადარჩნენ 0-თაობის შეგროვებას. შეგროვება იშვიათია.
- 2-თაობა: შეიცავს ხანგრძლივობიანი ობიექტებს. შეგროვება იშვიათია.
მძიმე GC-კალლს (მცირე გამოყენება და სიფრთხილით):
// მჭიდრო შეგროვების გამოძახება
System.GC.Collect();
// დასრულების მოლოდინი
System.GC.WaitForPendingFinalizers();
.NET-ის ძირითადი გროვის შეგროვების მექანიზმი არის მარკირების და კომპრესიის ალგორითმი.