目录

Golang

为什么快

省内存

  1. 只适用基础内存,无多余结构

inline

  1. 编译器来自动inline

内存分布

  1. 编译器通过escape analysis来确定内存分布在栈上还是堆上

Goroutines

  1. 合作调度

  2. 调度后只需保存在用的寄存器

  3. 只在特定点上并发

    1. channel收发

    2. go 语句开启新goroutines

    3. 阻塞的调用(网络/磁盘IO)

    4. gc以后

分区及栈拷贝

  1. 线程初始栈很小

  2. 按需扩容,拷贝整个栈

  3. 时机:进行函数调用时检查栈容量