Как работает page allocator?

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

Page allocator в Go рантайме управляет свободными страницами в mheap. С Go 1.14 использует radix tree для O(1) поиска непрерывных свободных страниц. Раньше был treap (рандомизированное дерево), что давало O(log n). Страницы в Go — 8КБ (не 4КБ как в ОС). Аллокатор получает запрос на N страниц, ищет непрерывный блок, помечает как занятый. При освобождении страницы возвращаются в пул. Периодически рантайм возвращает неиспользуемые страницы ОС через madvise(MADV_DONTNEED).

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

Расскажи про три фазы сборщика мусора