内存逃逸

什么是内存逃逸:

函数内部分配了一个变量或对象,并且该对象或变量在函数结束后仍然存在,这时就认为这个变量或对象是从函数中逃逸出去了.

这时编译器会将该变量或对象分配到堆上,而不是栈上。

为什么会关心内存逃逸:

性能优化:影响GC

代码优化:若无或少,便于理解代码逻辑,可提高可维护性

如何查看内存逃逸

可以使用 -gcflags ,查看什么变量逃逸到了堆上

1
go build -gcflags "-m"

如何避免内存逃逸:

  • 使用值传递
  • 避免闭包
  • 预分配内存

go 中的引用类型

slice map channel func interface


内存逃逸
http://example.com/2024/03/31/内存逃逸/
作者
Forrest
发布于
2024年3月31日
许可协议