Как работает tcmalloc в Go?

Senior
257 просмотров
AFK Offer AI

Go использует аллокатор памяти, вдохновлённый tcmalloc от Google. Идея — минимизировать блокировки при аллокации. Каждый P имеет mcache (локальный кеш), который содержит mspan-ы для разных size class-ов. Аллокация маленького объекта: берём слот из нужного mspan в mcache — без блокировки. Если mspan исчерпан — берём новый из mcentral (с блокировкой). Если mcentral пуст — запрашиваем страницы из mheap. Большие объекты (>32КБ) аллоцируются напрямую из mheap. Многоуровневый кеш = минимум contention.

Следующий вопрос

Как мониторить GC?