Golang
为什么快
省内存
只适用基础内存,无多余结构
inline
编译器来自动inline
内存分布
编译器通过escape analysis来确定内存分布在栈上还是堆上
Goroutines
合作调度
调度后只需保存在用的寄存器
只在特定点上并发
channel收发
go 语句开启新goroutines
阻塞的调用(网络/磁盘IO)
gc以后
分区及栈拷贝
线程初始栈很小
按需扩容,拷贝整个栈
时机:进行函数调用时检查栈容量
只适用基础内存,无多余结构
编译器来自动inline
编译器通过escape analysis来确定内存分布在栈上还是堆上
合作调度
调度后只需保存在用的寄存器
只在特定点上并发
channel收发
go 语句开启新goroutines
阻塞的调用(网络/磁盘IO)
gc以后
线程初始栈很小
按需扩容,拷贝整个栈
时机:进行函数调用时检查栈容量