当前位置: 首页 > news >正文

GO——内存逃逸分析

一、可能导致逃逸的5中情况

package mainimport "fmt"func main() {f1()f2()f3()f4()f5()
}type animal interface {run()
}type dog struct{}func (d *dog) run() {fmt.Println("狗在跑")
}// 指针、map、切片为返回值的会发生内存逃逸
func f1() (*int, map[int]int, []int) {i := 1list := []int{1, 2, 3}m := map[int]int{1: 1, 2: 2, 3: 3}return &i, m, list
}// 向chan中发送指针的数据时,会发生逃逸
func f2() {i := 2ch := make(chan *int, 2)ch <- &i<-ch
}// 闭包引用外部变量时,会发生逃逸
func f3() func() {i := 3return func() {fmt.Println(i)}
}// 在map、切片中包含指针的值时,会发生逃逸
func f4() {i := 1list := make([]*int, 2)list[0] = &i
}// interface类型多态的应用,可能会导致逃逸
// 由于接口类型可以持有任意实现了该接口的类型,编译器在编译时无法确定具体的动态类型
// 因此,为了保证程序的正确性,在运行时需要将接口对象分配到堆上
func f5() {var a animal = &dog{}a.run()var b animalb = &dog{}b.run()
}

二、对逃逸进行分析

go build -gcflags -m ./main.go 

在这里插入图片描述

相关文章:

  • goofys挂载minio为本地目录
  • IAR创建STM8裸机工程创建---STM8开发【二】
  • 金融全业务场景的系统分层与微服务域架构切分
  • 科技赋能音乐,指北科技新品闪耀广州国际乐器展
  • 智慧场馆:科技赋能的艺术盛宴
  • 青岛市长任刚与深兰科技董事长陈海波会谈,深兰青岛项目即将进入快车道!
  • leetcode hot100刷题日记——24.回文链表
  • Problem H. saki 酱 saki 酱 saki 酱 saki 酱(树的直径)
  • 影刀RPA-17- 列表练习
  • OpenCV CUDA模块直方图计算------在 GPU上执行直方图均衡化(Histogram Equalization)函数equalizeHist
  • 【Redis】基本命令
  • 油桃TV v20250519 一款电视端应用网站聚合TV播放器 支持安卓4.1
  • 英飞凌SBC芯片TLE9263QX for STM32的库函数与使用
  • git push Git远端意外挂断
  • 基于FPGA的DES加解密系统verilog实现,包含testbench和开发板硬件测试
  • AI笔记 - 模型调试 - 调试方式
  • 基于ssm的商城系统(全套)
  • 为 MCP Server 提供 Auth 认证,及 Django 实现示例
  • 20250528-C#知识:枚举
  • 学习路之Nginx--不同域名的反向代理
  • redis做缓存的网站并发数/广告投放的方式有哪些
  • 专做网游视频的网站/机器人编程培训机构排名
  • 公司网站手机版模板下载/福州短视频seo机会
  • 家装公司名称/vue seo 优化方案
  • 杭州网站建设优化/网站快速优化排名官网
  • 做地方网站要办什么证/电商网站分析