Sobes.tech
Senior

Чӣ гуна кор мекунад ҷамъоварии партовҳо дар Go?

sobes.tech AI

Ҷавоб аз AI

Гарbage Collector (GC) дар Go — ин як ҷамъкунандаи партовҳои асосёфта ба тугма, ҳамоҳанг, бо алгоритми марк-анд-свип ва кор мекунад дар параллел бо ҷараёни асосӣ, то кам кардани вақтҳои истодагарӣ дар барнома.

Қадамҳои асосии GC дар Go:

  1. Нишонгузорӣ (Mark): GC ба ҳамаи решаҳо (горутины, стеки, тағйирёбҳои глобалӣ) мегузарад ва ҳамаи объектҳои дастрасро нишон медиҳад.
  2. Тоза кардан (Sweep): Ҳама объектҳои номуайян ҳамчун партов ҳисобида мешаванд ва озод карда мешаванд.

GC дар Go оптимизатсия шудааст барои пасти таъхир, бинобарин ҷамъоварӣ дар параллел бо иҷрои барнома сурат мегирад, ки вақти истодагариро кам мекунад. Ҳамчунин, GC автоматӣ ёдгириро идора мекунад, ки барномасозро аз идоракунии дастӣ озод мекунад.

Ин аст, ки чӣ гуна як давраи соддашудаи GC менамояд:

// Ёдгирӣ тавассути new ё make таъин мешавад
p := new(int)
// GC автоматӣ ёдгириро озод мекунад вақте ки p дастрас нест мешавад

Дар версияҳои охир, GC дар Go беҳтар шудааст барои кор бо бисёрсӯзишҳо ва кам кардани парчамгирии ёдгирӣ.