← 返回首页
Go中 内存逃逸是什么,怎么发生的
内存逃逸是编译器在程序编译时期根据逃逸分析策略,将原本应该分配到栈上的对象分配到堆上的一个过程
主要逃逸场景:
- 返回局部变量指针:函数返回内部变量的地址,变量必须逃逸到堆上
- interface{}类型:传递给interface{}参数的具体类型会逃逸,因为需要运行时类型信息
- 闭包引用外部变量:被闭包捕获的变量会逃逸到堆上
- 切片/map动态扩容:当容量超出编译期确定范围时会逃逸
- 大对象:超过栈大小限制的对象直接分配到堆上