Sobes.tech
Junior — Middle

Механизми ҷамъоварии автоматии партовҳо дар забони Go ва чӣ гуна он ёдгириро идора мекунад.

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 идоракунии ёдгириро содда мекунад, эҳтимолияти сӯроишҳо ва хатоҳоро кам мекунад.