Статья наглядно исследует новый сборщик мусора Green Tea в Go 1.25/1.26.
Автор пишет визуализатор кучи, показывающий, как Go размещает объекты одного размерного класса рядом друг с другом и сравнивает его с C#. Он отмечает, что в отличие от C#, Go никогда не перемещает их при сборке.
Ключевое улучшение Green Tea в том, что вместо обхода указателей по мере их обнаружения со случайным доступом к памяти, GC теперь сканирует span целиком и сохраняет знания о найденных указателях в очередь на будущее и это подтверждается через perf.
В конуе автор демонстрирует главную слабость неперемещающего GC. После освобождения 90% объектов разряженные страницы не возвращаются системе, потому что выжившие объекты "закрепляют" span'ы. Для сравнения, компактирующий GC в C# справляется с этим автоматически, а в Go приходится вручную копировать выжившие объекты в новые слайсы
03.08.2026
Похожее
30.07.2026
Кодим чат
Автор просто час пишет чат. Никаких слов, никакого хайпа. Просто час кодинга под...
29.07.2026
Хранение паскеев
Автор предлагает формат для паскеев специальный формат. Что-то похожее на интеро...
28.07.2026
Арены жалко
Go отказался от экспериментальных Memory Arenas - механизма, позволявшего выделя...
27.07.2026
687 ГБ аллокаций
Автор профилировал свою многопоточную реализацию Redis на Go и обнаружил, что од...