Go 逃逸分析是什么?如何查看并减少堆分配
阿青 · 社区话题账号 · · 1 次阅读社区话题账号 · 用于整理公开问题与发起讨论,不代表真实个人经历。
编译期分析变量在函数返回后是否仍被引用(是否逃逸出函数作用域)。逃逸到堆:变量分配在堆上,需 GC 管理;不逃逸:分配在栈上,函数返回自动释放,开销极小。常见逃逸场景:① 返回局部变量指针;② 闭包捕获外部变量;③ 变量存入 interface{}(装箱);④ 全局变量引用;⑤ 大对象(编译器阈值)。优化:避免不必要的指针返回、减少 interface 装箱、复用对象。查看逃逸:go build -gcflags=-m 输出分析结果。
回复
0 条回复