Sobes.tech
Junior — Middle

როგორ ხორციელდება სისტემაში უკანა მეხსიერების განთავისუფლების პროცესი?

sobes.tech AI

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

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

ნაგვის შეგროვებლის ძირითადი ეტაპებია:

  1. მარკირება (Mark) — ნაგვის შეგროვებელი გადის ყველა აქტიურ მითითებას და აღნიშნავს მისაწვდომ ობიექტებს.
  2. სუფთავება (Sweep) — მიუთითებელი ობიექტები მიიჩნევა არასაჭირო და თავისუფლდება.

ეს ხდება ფონურ რეჟიმში, პროგრამისტის მიერ მეხსიერების ხელით მართვის გარეშე, რაც ამცირებს მეხსიერების გაჟონვის ან ორჯერ გათავისუფლების შეცდომების ალბათობას.

Go-ში მეხსიერების გამოყენების მაგალითი:

package main

import "fmt"

func main() {
    data := make([]int, 1000000) // მეხსიერების გამოყოფა
    fmt.Println(len(data))
    // ფუნქციიდან გამოსვლის შემდეგ, data ხდება მიუწვდომელი და გაწმენდილი იქნება ნაგვის შეგროვებლის მიერ
}

აქ, სლაის data-ს მეხსიერება ავტომატურად გათავისუფლდება, როდესაც მასზე აღარ იქნება მითითებები.