Автор продолжает цикл статей про рантайм Go. Теперь на очереде разбор аллокаторов.
Аллокатор, по сути, компонента runtime, который эффективно управляет выделением и освобождением памяти в куче. Вместо того чтобы каждый раз обращаться к операционной системе через медленные системные вызовы, runtime заранее запрашивает у ОС крупные блоки памяти, которые затем делятся на страницы по 8 КБ. Для удовлетворения запросов программы страницы группируются в спаны, каждый из которых предназначен для объектов строго одного размера. Для решения проблемы конкурентного доступа "тысяч горутин" используется трехуровневая иерархия: быстрый и неблокирующий mcache на каждом процессоре, централизованное хранилище спанов mcentral для каждого класса с короткими блокировками и глобальный mheap, управляющий страницами.
Подробнее в статье
05.03.2026
Похожее
09.07.2026
Джину уже 12 лет
Ману Мартинес-Алмейда рассказывает историю как он создавал Gin - одного из самых...
08.07.2026
zero-copy-оптимизации
Разбор zero-copy-оптимизаций в Go. Когда вы передаете `*os.File` напрямую `в...
07.07.2026
WAL-RUS
ClickHouse Cloud переписали утилиту для бэкапов и WAL-архивирования Postgres с G...
06.07.2026
Профилирование
Статья разбирает пять встроенных профилировщиков в Go (CPU, heap, block, mutex и...