Автор продолжает цикл статей про рантайм Go. Теперь на очереде разбор аллокаторов.
Аллокатор, по сути, компонента runtime, который эффективно управляет выделением и освобождением памяти в куче. Вместо того чтобы каждый раз обращаться к операционной системе через медленные системные вызовы, runtime заранее запрашивает у ОС крупные блоки памяти, которые затем делятся на страницы по 8 КБ. Для удовлетворения запросов программы страницы группируются в спаны, каждый из которых предназначен для объектов строго одного размера. Для решения проблемы конкурентного доступа "тысяч горутин" используется трехуровневая иерархия: быстрый и неблокирующий mcache на каждом процессоре, централизованное хранилище спанов mcentral для каждого класса с короткими блокировками и глобальный mheap, управляющий страницами.
Подробнее в статье
05.03.2026
Похожее
17.04.2026
Черный ящик
Вдохновившись механизмом trace.FlightRecorder, появившимся в Go 1.25, автор реши...
16.04.2026
Версионирование
В статье автор делится опытом разбора инцидента, где отсутствие информации о вер...
15.04.2026
Константные мапы
В Go существует стандартная карта, которая для миллиона записей потребляет около...
14.04.2026
Вызываем Rust из Go
В принципе, нет никаких сложностей работать с Rust через cgo. Но автор решил зам...