0
点赞
收藏
分享

微信扫一扫

Go 逃逸分析

对于一个 Go 局部变量,如何确定它被分配在堆上还是栈上?

按照官方 FAQ ​​How do I know whether a variable is allocated on the heap or the stack?​​ 的解释:

  • Go 编译器会尽可能将变量分配在栈上
  • 以下两种情况,Go 编译器会将变量分配在堆上
  • 如果一个变量被取地址(has its address taken),并且被逃逸分析(​​escape analysis​​)识别为 “逃逸到堆”(escapes to heap)
  • 如果一个变量很大(very large)

 Go 逃逸分析_编译器

Go 逃逸分析_编译器_02

详细讲解请看下面这几篇文章:

​​Go内存管理之代码的逃逸分析 (微信公众号 - 网管叨bi叨)​​

​​Golang 内存分配之逃逸分析 - 知乎 (zhihu.com)​​

​​如何确定一个 Go 变量会被分配在哪里? | RussellLuo​​

​​通过实例理解Go逃逸分析 (微信公众号 -TonyBai)​​

举报

相关推荐

0 条评论