Sobes.tech
Junior — Middle

გო ენის ავტომატური ნაგვის შეგროვების მექანიზმი და როგორ მართავს ის მეხსიერებას.

sobes.tech AI

პასუხი AI-სგან

Go ენის გამოყენებით გამოიყენება ავტომატური ნაგვის შეგროვება (Garbage Collector, GC), რომელიც მართავს მეხსიერებას, გაათავისუფლებს არასაჭირო ობიექტებს.

მექანიზმი დაფუძნებულია ობიექტების ხელმისაწვდომობის თვალთვალისა და გამოთვლის ალგორითმზე:

  • Go იწყებს ნაგვის შეგროვებას პარალელურად პროგრამის შესრულებასთან (კონკურენტული GC).
  • GC განსაზღვრავს, რომელი ობიექტები აღარ არის ხელმისაწვდომი ძირითადი მითითებებიდან (მაგ., გლობალური ცვლადები, goroutine-ის სტეკები).
  • მიუწვდომელი ობიექტები ითვლება ნაგვად და თავისუფლდება.

მახასიათებლები:

  • Go იყენებს სამწელიწადიან შეგროვებას: mark (ხელმისაწვდომი ობიექტების მონიშვნა), sweep (მიუწვდომელი ობიექტების განთავისუფლება).
  • ნაგვის შეგროვება მინიმუმამდე ამცირებს პაუზებს, რათა პროგრამის შესრულება არ შეფერხდეს.
  • მეხსიერების მართვა ავტომატურია, პროგრამისტს არ სჭირდება მეხსიერების გამიჯვნა ხელით.

მაგალითი:

func main() {
    s := make([]int, 1000000) // მეხსიერების გამოყოფა
    // s-ის გამოყენება
    s = nil // ახლა სლაისი მიუწვდომელია
    // GC გაათავისუფლებს მეხსიერებას შემდეგ გაშვებაზე
}

ამ გზით, Go-ს მეხსიერების მართვა მარტივია, შემცირებულია სითხეების და შეცდომების ალბათობა.