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

【Go - 每日一小问,new出来的空间,是在堆还是栈上,用手动回收吗】

堆还是栈

和有些语言不同,Go中的new 不是直接分配在栈或堆上,而是取决于内存逃逸。
Go语言中的 new 不一定总是在堆上分配内存,实际分配由编译器决定,基于变量是否逃逸作用域,也就是取决于内存逃逸。内存逃逸则在堆上,否则在栈上
Go判断内存逃逸 可以通过如下命令, 查看是否逃逸,

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

典型的内存逃逸场景,

  • 变量的生命周期超出了函数的作用域:如果一个变量在函数返回后仍然被引用,那么它必须分配在堆上。

  • 变量的地址被返回:如果一个变量的地址被返回或传递给其他函数,它也可能会逃逸到堆上。

  • 变量被传递给其他 goroutine:如果一个变量被传递给另一个 goroutine,它也会逃逸到堆上。

是否需要手动回收

不用手动回收 。

Go有自己的垃圾回收机制。简单来说就是 mark && sweap 机制,配合三色标记法等优化方式,来自动进行回收,一般不需要手动介入回收。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Python 潮流周刊#67:uv 的重磅更新(摘要)
  • 【业务场景实战】我等你10秒
  • [Leetcode 51][Hard]-n皇后问题-回溯
  • BeanFactory 和 FactoryBean 的区别
  • 基于yolov10的PCB检测算法研究
  • Leetcode Day18 堆
  • EventBus搭配LifeCycle可能更美味
  • 大模型笔记01--基于ollama和open-webui快速部署chatgpt
  • 51单片机-定时器介绍
  • 模型 冯/诺依曼思维模型
  • 《PCI Express体系结构导读》随记 —— 第II篇 第7章 PCIe总线的数据链路层与物理层(2)
  • 【Java开发】Maven安装配置详细教程
  • python模块06 mock-1基础用法
  • JavaWeb:实验一JSP运行环境安装及配置
  • 5.Redis 集群 主从复制 哨兵
  • 2017 年终总结 —— 在路上
  • 2017 前端面试准备 - 收藏集 - 掘金
  • Android Studio:GIT提交项目到远程仓库
  • es6--symbol
  • express如何解决request entity too large问题
  • Hexo+码云+git快速搭建免费的静态Blog
  • JavaScript DOM 10 - 滚动
  • Java新版本的开发已正式进入轨道,版本号18.3
  • Laravel 中的一个后期静态绑定
  • Lsb图片隐写
  • Swift 中的尾递归和蹦床
  • windows下使用nginx调试简介
  • 从零搭建Koa2 Server
  • 浮现式设计
  • 记一次删除Git记录中的大文件的过程
  • 批量截取pdf文件
  • 前端存储 - localStorage
  • 从如何停掉 Promise 链说起
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • #NOIP 2014# day.2 T2 寻找道路
  • $().each和$.each的区别
  • (C++)八皇后问题
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (补)B+树一些思想
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (论文阅读30/100)Convolutional Pose Machines
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • .mysql secret在哪_MYSQL基本操作(上)
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .NET单元测试使用AutoFixture按需填充的方法总结
  • .NET命名规范和开发约定
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • ??Nginx实现会话保持_Nginx会话保持与Redis的结合_Nginx实现四层负载均衡
  • @Controller和@RestController的区别?
  • @EnableWebSecurity 注解的用途及适用场景
  • @ohos.systemParameterEnhance系统参数接口调用:控制设备硬件(执行shell命令方式)
  • [100天算法】-目标和(day 79)
  • [7] CUDA之常量内存与纹理内存
  • [BZOJ4554][TJOI2016HEOI2016]游戏(匈牙利)
  • [C]整形提升(转载)