Go不是C。尽管有相似之处,但它的层次更高。它利用了带有绿色线程调度程序和垃圾收集内存管理器的完整运行时。只要有实时引用,它就永远不会收集内存。
Go编译器包括一个称为“转义分析”的阶段,在此阶段,它跟踪每个变量以查看其是否“转义”了声明其的函数。任何可以转义的值都在堆上分配,并由垃圾回收管理。否则,它通常分配在堆栈上。
您可以找到有关该主题的更多信息:
- https://blog.golang.org/ismmkeynote
- https://dave.cheney.net/2014/06/07/five-things-that-make-go-fast
- https://dougrichardson.org/2016/01/23/go-memory-allocations.html
- https://www.agardner.me/golang/garbage/collection/gc/escape/analysis/2015/10/18/go-escape-analysis.html
- https://www.ardanlabs.com/blog/2017/05/language-mechanics-on-escape-analysis.html



