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 срезинин эс тутуму автоматтык түрдө бошотулат, анткени ага шилтемелер калбады.