Sobes.tech
Junior — Middle

Tizimda teskari xotira bo'shatish jarayoni qanday amalga oshiriladi?

sobes.tech AI

AIdan javob

Go tilida xotira bo'shati tozalash jarayoni ichki axlat yig'uvchi (Garbage Collector) orqali amalga oshiriladi. U avtomatik ravishda dastur tomonidan endi ishlatilmaydigan ob'ektlarni kuzatadi va ularni bo'shatadi.

Xotira tozalash jarayonining asosiy bosqichlari:

  1. Belgilash (Mark) — yig'uvchi barcha faol havolalarni o'tib chiqadi va erishish mumkin bo'lgan ob'ektlarni belgilaydi.
  2. Tozalash (Sweep) — belgilamagan ob'ektlar foydalanilmaydigan deb hisoblanadi va bo'shatiladi.

Bu jarayon fon rejimida amalga oshadi, dasturchidan xotira boshqaruvini qo'lda qilish talab qilinmaydi, bu esa xotira oqibati yoki ikki marta bo'shatish bilan bog'liq xatoliklar ehtimolini kamaytiradi.

Go'da xotira foydalanish misoli:

package main

import "fmt"

func main() {
    data := make([]int, 1000000) // xotira ajratish
    fmt.Println(len(data))
    // Funksiyadan chiqib, data endi mavjud emas va tozalash jarayoni tomonidan tozalanadi
}

Bu yerda, data dilimining xotirasi avtomatik ravishda bo'shatiladi, endi unga murojaat qiluvchi hech qanday havola qolmaganda.