Go 语言历史
English

运行时核心

调度器

执行栈

内存分配器

Go 内存分配的实力简述:Russ Cox 在 Go 1 上首次实现了基于 tcmallor 的内存分配器,mcache 缓存在 M 上。然后他修改了分配器,允许使用 16GB 的内存,后来到了128GB。然而,分配器(包括收集器)有很严重的锁竞争,且不可伸缩。在 Dmitry 的可伸缩运行时调度器后,分配器可以直接从P锁竞争中分配(更少)。同时,收集器从独立线程迁移到系统监视器线程。现在,Michael 正致力于提高内存分配器的可伸缩性,例如将收集器迁移到用户线程,基于位图的页分配器,可伸缩的 mcentral。

垃圾收集器

统计

内存模型

Go 内存模型包含以下方面:

ABI

Misc