Go-内存逃逸

一、什么是内存逃逸?

golang在编译时,需要确定一个变量到底是在栈上分配内存,还是在堆上分配内存,不能在栈上分配的变量,就只能在堆上分配,就说这个变量内存逃逸了。

二、什么时候会内存逃逸?

引起内存逃逸的关键:编译器在编译时,无法确定变量的生命周期,只能在运行时控制。

  • 函数返回了局部变量的指针
  • 发送指针或者带有指针的数据进channel
  • 在切片上存储指针或带有指针的值
  • 切片扩容
  • 调用interface的方法(fmt.println)

三、逃逸分析命令

go build -gcflags=-m main.go

posted @ 2022-03-15 10:33  hugeQAQ  阅读(156)  评论(0编辑  收藏  举报