golang 内存管理

news/2025/11/5 9:37:27/文章来源:https://www.cnblogs.com/wentaowu/p/19192464

对象池

  • 在每次开始执行垃圾回收时,都会清除所有已创建的临时对象池中的值
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 一个固定大小,不会被GC的内存池
    • 主要优势是不会被GC。缺点是少了收缩性,设置大了浪费内存,设置小了复用作用不明显
    • 适用于能够提前预估池子大小的场景
      • 在实践中,我们将其用在DB序列化层,其Worker数量固定,单个[]byte较大,也相对稳定

堆栈(逃逸分析)

  • Go 有两个地方可以分配内存:
    • 全局堆空间用来动态分配内存
    • 每个 goroutine 都有的自身空间
  • Go 更倾向于在栈空间上分配内存,因为它的代价更低
    • 只需要两个 CPU 指令:一个是把数据 push 到栈空间上以完成分配,另一个是从栈空间上释放
    • malloc(堆分配)必须找到一块足够大的内存来存放新的变量数据,后续垃圾回收器还需要扫描堆空间寻找不再被使用的对象
  • 在栈上分配要求一个变量的生命周期和内存足迹能在编译时确定,否则就需要在运行时在堆空间上进行动态分配
    • 编译器使用逃逸分析来在这两者间做选择
    • 编译器会追踪变量在代码块上的作用域,如果它的整个生命周期是否在运行时完全可知,它就可以在栈上分配。否则就说它逃逸了,必须在堆上分配
  • 逃逸到堆上的典型情况
    • 函数返回变量地址,或返回包含变量地址的struct
    • 发送指针或带有指针的值到 channelsync.Pool
      • 编译时没有办法知道哪个 goroutine 会在 channel 上接收数据,所以编译器没法知道变量什么时候才会被释放
    • 在切片上存储指针或带指针的值,例如 []*string
      • 这会导致切片的内容逃逸,尽管数组可能是在栈上分配的,但其引用的值一定是在堆上
    • 在 interface 类型上调用方法
      • 在 interface 类型上调用方法都是动态调度的, 方法的真正实现只能在运行时知道
    • 闭包也可能导致闭包上下文逃逸
    • slice变量超过cap重新分配时,将在堆上进行
    • 将变量地址赋给可扩容容器(如map,slice)时
      在这里插入图片描述

内存分配

在这里插入图片描述
在这里插入图片描述

指针

  • 指针指向的数据都是在堆上分配的
    • 在程序中减少指针的运用可以减少堆分配
  • 有时直接的值拷贝要比使用指针廉价的多
    在这里插入图片描述
  • 不要掉进过早优化的陷阱,养成一个按值传递的习惯,只在需要的时候用指针传递
    • 一个好处就是可以较少 nil 带来的安全问题
    • 另一个好处是如果可以证明它里面没有指针,垃圾回收器会直接越过这块内存
      • 例如一块作为 []byte 背后存储的堆上内存,是不需要进行扫描的
    • 减少指针的使用不仅可以降低垃圾回收的工作量,还能产生对 cache 更加友好的代码
      • 要把数据从主内存读到 CPU 的 cache 中,由此产生的 cache 抖动会引起线上服务的一些意外的和突然的抖动

内联

  • 对Interface的方法调用不能被内联
    • 直接用Struct,借助于内联,字段访问会快一个数量级
  • 过于激进的内联会导致生成的二进制文件更大,CPU instruction cache miss也可能会增加
  • 内联可以减少逃逸到堆上的情况
    • 否则即使是简单函数,只要返回指针都会逃逸

参考

  • https://mp.weixin.qq.com/s?__biz=Mzg2MDU1Mjc3MQ==&mid=2247489727&idx=1&sn=6191494e579eff35afdecf4bffc93fd6&source=41#wechat_redirect
  • https://wudaijun.com/2019/09/go-performance-optimization/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/956437.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年比较好的耐压金属软管由壬厂家最新TOP推荐榜

2025年比较好的耐压金属软管由壬厂家最新TOP推荐榜 在石油勘探、钻采设备及高压流体控制领域,耐压金属软管和由壬产品的质量直接影响作业安全与效率。2025年,随着技术迭代和市场需求升级,具备高强度、耐腐蚀、抗压…

2025年挤出机冷却塔厂家权威推荐榜单:中频炉冷却塔/吹瓶机冷却塔/注塑机冷却塔源头厂家精选

在塑料挤出、中频炉冶炼、吹瓶成型及注塑加工等工业领域,冷却塔作为核心散热设备,其性能直接关系到生产效率和能源消耗。随着“双碳”战略的深化,行业对冷却塔的节能性、稳定性和定制化需求显著提升。据行业统计,2…

2025年热门的帆布布袋定制厂家最新权威推荐榜

2025年热门的帆布布袋定制厂家最新权威推荐榜 在当今环保意识日益增强的市场环境下,帆布布袋因其耐用、环保、可定制等特点,成为企业宣传、品牌推广和日常使用的热门选择。无论是企业礼品、促销活动,还是文创产品、…

2025 年轻质抹灰石膏厂家最新推荐榜,技术实力与市场口碑深度解析,筛选高性能优质品牌找平 / 多立特 / 抗裂 / 隔音轻质抹灰石膏公司推荐

引言 2025 年轻质抹灰石膏行业持续发展,市场对高品质产品需求攀升。为精准筛选优质品牌,本次推荐榜测评由行业权威协会主导,参考近三年行业数据,从技术实力、产品性能、市场口碑三大维度构建测评体系。技术实力维度…

2025 年 11 月微通道换热器厂家推荐排行榜,微通道蒸发器,微通道换热器,微通道换热器厂家最新推荐

2025 年 11 月微通道换热器厂家最新推荐行业背景与发展趋势微通道换热技术作为热管理领域的重要创新,近年来在汽车、新能源、工业制冷等行业得到广泛应用。与传统换热器相比,微通道换热器凭借其紧凑结构、高效传热性…

VisualStadio2019 社区版下载

在线安装版(9.99) 链接: https://pan.baidu.com/s/1Ld8kV-QVIf6niYbTW4UINg 提取码: 8nf3

红外

红外非常好,这是你能和其他候选人拉开差距的关键点之一。 “可见光/红外成像”这部分在睿创维纳(超睿光电)的 ISP 算法岗位中是非常核心的特色方向——他们的产品线中包含红外监控摄像头、车载夜视系统、安防/工业热…

2025年优秀的建筑业体系认证服务商实力排行

2025年优秀的建筑业体系认证服务商实力排行 建筑业体系认证是提升企业竞争力、规范管理流程、增强市场公信力的重要手段。随着行业标准的不断提高,选择一家专业、可靠的认证服务商至关重要。本文根据企业服务质量、客…

筑牢安全基座——国产制品库如何重塑企业软件供应链防线?

2025 年全球软件供应链攻击激增,传统制品管理平台存在安全渗透、合规缺口等风险。国产制品库以 “安全左移” 构建三重防护,还适配信创生态、降低迁移成本,更贴合企业需求。企业选型可优先考虑这类制品库,夯实软件…

C++23的out_ptr和inout_ptr

c++23新增了一些智能指针适配器,用来扩展和简化智能指针的使用。 这次主要介绍的是std::out_ptr和std::inout_ptr。这两个适配器用法和实现都很简单,但网上的文档都比较抱歉,还缺少一些比较重要的部分,因此单开一篇…

2025年服务贴心的离婚财产分割律师实力推荐榜

2025年服务贴心的离婚财产分割律师实力推荐榜 在婚姻关系破裂时,财产分割往往是当事人最关心的问题之一。选择一位专业、经验丰富且服务贴心的离婚财产分割律师,能够帮助当事人高效、公正地解决纠纷,最大限度地维护…

2025年口碑好的陕西白水苹果精选优质产区

2025年口碑好的陕西白水苹果精选优质产区陕西白水苹果产业概况陕西白水县位于渭北黄土高原,是世界公认的苹果最佳优生区之一。这里海拔适中、昼夜温差大、光照充足、土壤肥沃,为苹果生长提供了得天独厚的自然条件。白…

2025年专业的专利评估顶尖服务推荐

2025年专业的专利评估顶尖服务推荐 在当今高度竞争的商业环境中,专利作为企业核心竞争力的重要组成部分,其价值评估与运营管理显得尤为关键。专业的专利评估服务不仅能帮助企业准确衡量专利资产的市场潜力,还能为技…

P1315 [NOIP 2011 提高组] 观光公交

P1315 [NOIP 2011 提高组] 观光公交 题解题目传送门 我的博客-欢迎来访 个人认为是个好题。另外,推荐一下这篇题解,看着这篇题解学明白的。首先,我们要求的是最小的 \(\sum\limits_{i=1}^{m}{arr_{to_i}}-tim_{i}\)…

2025年11月销量第一认证机构评测:资质认证与实战案例深度剖析

在当今竞争激烈的市场环境中,企业越来越需要借助权威的第三方认证来证明自身的市场地位。销量第一认证作为一种重要的市场背书工具,能够帮助企业提升品牌公信力、增强市场竞争力。对于正在寻找认证机构的企业决策者来…

最近笔记

VSCode json 快捷键 下载Prettify JSON 然后 ctrl+shift +p 然后搜索Prettify JSON 可以直接把文件展开

CH5xx 复位启动时间

CH5xx 复位启动时间本文实测了CH573 CH582 CH592 CH585 CH572系列芯片的复位启动时间(从复位发生到运行main函数) 一.上电复位 上电复位典型值15ms+boot启动文件约40ms+boot执行约40ms+用户程序启动文件约40ms 最长约…

2025年质量好的马靴劳保鞋推荐TOP品牌厂家

2025年质量好的马靴劳保鞋推荐TOP品牌厂家 行业概述 在工业生产、建筑施工、油田作业等高风险环境中,一双高质量的马靴劳保鞋是保障劳动者安全的基础装备。优质的劳保鞋不仅需要具备防砸、防刺穿、防静电等基础功能…

2025年知名的青年鸡热门品牌

2025年知名的青年鸡热门品牌 随着养殖业的快速发展,青年鸡市场逐渐成为行业关注的焦点。优质的青年鸡供应商不仅能提供健康的鸡苗,还能帮助养殖户提高生产效率和经济效益。2025年,市场上涌现出一批优秀的青年鸡品牌…

等离子清洗机设备:安全性高、技术强、外观美观

在精密制造领域,等离子清洗机是提升产品良率与可靠性的隐形基石。企业选择时往往聚焦三大核心需求:设备安全性、技术专业性与外观实用性。以下结合行业评测与用户反馈,推荐2025年五大等离子清洗机品牌,为企业选购提…