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

go的内存逃逸

逃逸

在函数内部创建的对象或变量,在函数结束后仍然被其他部分引用或持有。也就是说本来应该被销毁的,结果还能被其他函数引用。逃出函数的作用域因此叫做逃逸

原因

栈空间

如果一个变量导致占空间无法容纳,它就会逃逸到堆上

作用域

作用域发生了变化(比如被函数外部引用),就会导致我们函数变量还会存在。

编译时

无法确定类型和大小,也会发生逃逸

golang内存分片的基本原则

指向栈上对象的指针不能被存储到堆中

如果栈上的变量被一个堆上的对象所引用(比如全局变量、其他堆对象的字段),那么栈变量就必须在堆上分配,否则当函数返回后栈帧被销毁,堆中的指针就会指向无效内存。

指向栈上对象的指针不能超过该栈对象的生命周期

函数返回了局部变量的地址,或者将局部变量的指针传递给了其他存活时间更长的 goroutine 或全局容器。此时,局部变量必须逃逸到堆,才能在被引用时依然有效。

查看

go build -gcflags="-m" main.go

加上-gcflags就可以查看了

影响

比如分配和回收的影响(逃逸到堆上,需要GC来回收,增加开销),指针引用和内存安全(其他的协程也能访问到,导致安全问题),内存泄漏风险(因一直没有被回收,导致内存一直增加,从而导致泄漏风险

所以我们需要规避不必要的内存逃逸

http://www.jsqmd.com/news/435540/

相关文章:

  • 2026年怀孕APP推荐:基于多场景实测评价,针对个性化需求与数据安全痛点精准指南 - 品牌推荐
  • 经典蓝牙与低功耗蓝牙 (BLE) 核心技术对比
  • 从本体论、认识论和方法论三个维度对比贾子思想、系统论和复杂科学的异同
  • FFmpeg 命令 水印以及水印位置 FFmpeg 命令录音录像时分辨率 FFmpeg 查看分辨率以及指定分辨率
  • MBR 分区重定义在线扩容根目录(/)实战步骤
  • 洛谷 P1331:海战 ← Flood fill
  • 探讨日通机械在江苏的企业实力,选它做合作品牌推荐吗? - 工业品牌热点
  • 贾子思想纲领:底层逻辑的认知重构 |Kucius Thought Manifesto: Cognitive Restructuring of Underlying Logic
  • Java 面试汇总(1000 道附答案解析)
  • 2026年全国实力强的卧龙电气南阳防爆集团公司推荐,上海炬越值得选吗 - myqiye
  • 2026年旋流微泡曝气器厂家推荐:无堵塞/高效旋流曝气器/蘑菇头旋流曝气器/流剪切曝气器专业供应 - 品牌推荐官
  • 计算机毕业设计springboot儿童早教课程管理系统 基于SpringBoot的学前儿童智能选课服务平台 SpringBoot框架下的幼儿早期教育教务管理系统
  • wpf ToggleButton实现控制UI组件宽度,展开或收缩
  • 2026年哪些英国海外仓品牌机构靠谱,海云汇性价比高推荐给你 - 工业品网
  • 毕业论文降AI率分步骤教程:从检测到最终通过 - 我要发一区
  • 乘势“人工智能+”东风,海豚善学深耕AI创作教育,打造十五五职业新赛道人才培养标杆
  • 大表全表扫描(`SELECT * FROM big_table` 导致数据库宕机)
  • 2026年剖析海外仓代发服务,推荐几家性价比高的企业排名 - 工业推荐榜
  • 磐谷动力:以硬核动力装备赋能新型能源体系,助力“双碳”与新质生产力落地 - 速递信息
  • 全栈适配能力测评:国产信创DevOps平台兼容差异深度分析(2026)
  • 2026国内环境试验设备优质品牌推荐:干燥箱/快速耐候试验箱/恒温恒湿试验房/恒温恒湿试验机/换气式冷热冲击试验箱/选择指南 - 优质品牌商家
  • 聊聊东莞霞晖自动化靠不靠谱,广东地区该品牌口碑如何 - 工业设备
  • 专利设计知识产权保护指南:可信时间戳平台操作全解析
  • 2026年广东口碑好的美甲喷漆机服务商推荐,靠谱品牌全解析哪家好 - mypinpai
  • 2026年福建食堂生鲜/蔬菜/食材/肉类/食堂配送公司深度评估报告:全产业链整合能力成为决胜关键 - 2026年企业推荐榜
  • vim选择
  • 商标设计著作权保护新攻略:可信时间戳全流程认证指南
  • 2026年3月注塑加工厂家推荐,快速打样缩短上市周期 - 品牌鉴赏师
  • 文档能修改时间吗?文档时间修改方法汇总
  • 2月聚焦:2026年市面上热门污水处理设备企业有哪些,中水回用污水处理设备/进口树脂,污水处理设备销售厂家哪家好 - 品牌推荐师