Sobes.tech
Назад к вопросам
Senior
5

Расскажи про сборщик мусора (Garbage Collector) в Go.

Компании, где спрашивали
.wrk

Ответ от нейросети

sobes.tech AI

В Go сборщик мусора (Garbage Collector, GC) отвечает за автоматическое управление памятью, освобождая неиспользуемые объекты, чтобы избежать утечек памяти.

Особенности GC в Go:

  • Параллельный и конкурентный: работает одновременно с выполнением программы, минимизируя паузы.
  • Трёхфазный процесс: маркировка (определение достижимых объектов), очистка (удаление недостижимых), и сжатие памяти.
  • Тонкая настройка: можно управлять частотой и агрессивностью сборки через параметры среды.

Пример использования GC в Go не требует явного вызова, но можно вызвать сборку вручную:

package main
import (
    "runtime"
    "fmt"
)
func main() {
    var m runtime.MemStats
    runtime.ReadMemStats(&m)
    fmt.Printf("Allocated before GC: %v bytes\n", m.Alloc)
    runtime.GC() // принудительный запуск сборщика мусора
    runtime.ReadMemStats(&m)
    fmt.Printf("Allocated after GC: %v bytes\n", m.Alloc)
}

Таким образом, GC в Go облегчает разработчикам управление памятью, повышая надёжность и производительность приложений.