首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
爱唱歌的太平湖水怪
广东科学技术职业学院 后端
发布于广东
关注
已关注
取消关注
@小白debug:
高频golang面试题:简单聊聊内存逃逸?
问题 知道golang的内存逃逸吗?什么情况下会发生内存逃逸? 怎么答 golang程序变量会携带有一组校验数据,用来证明它的整个生命周期是否在运行时完全可知。如果变量通过了这些校验,它就可以在栈上分配。否则就说它 逃逸 了,必须在堆上分配。 能引起变量逃逸到堆上的典型情况: 在方法内把局部变量指针返回 局部变量原本应该在栈中分配,在栈中回收。但是由于返回时被外部引用,因此其生命周期大于栈,则溢出。 发送指针或带有指针的值到 channel 中。 在编译时,是没有办法知道哪个 goroutine 会在 channel 上接收数据。所以编译器没法知道变量什么时候才会被释放。 在一个切片上存储指针或带指针的值。 一个典型的例子就是 []*string 。这会导致切片的内容逃逸。尽管其后面的数组可能是在栈上分配的,但其引用的值一定是在堆上。 slice 的背后数组被重新分配了,因为 append 时可能会超出其容量( cap )。 slice 初始化的地方在编译时是可以知道的,它最开始会在栈上分配。如果切片背后的存储要基于运行时的数据进行扩充,就会在堆上分配。 在 interface 类型上调用方法。 在 interface 类型上调用方法都是动态调度的 —— 方法的真正实现只能在运行时知道。想像一个 io.Reader 类型的变量 r , 调用 r.Read(b) 会使得 r 的值和切片b 的背后存储都逃逸掉,所以会在堆上分配。 举例 通过一个例子加深理解,接下来尝试下怎么通过 go build -gcflags=-m 查看逃逸的情况。package mainimport "fmt"type A struct { s string}// 这是上面提到的 "在方法内把局部变量指针返回" 的情况func foo(s string) *A { a := new(A) a.s = s return a //返回局部变量a,在C语言中妥妥野指针,但在go则ok,但a会逃逸到堆}func main() { a := foo("hello") b := a.s + " world" c := b + "!" fmt.Println(c)} 执行go build -gcflags=-m main.go go build -gcflags=-m main.go# command-line-arguments./main.go:7:6: can inline foo./main.go:13:10: inlining call to foo./main.go:16:13: inlining call to fmt.Println/var/folders/45/qx9lfw2s2zzgvhzg3mtzkwzc0000gn/T/go-build409982591/b001/_gomod_.go:6:6: can inline init.0./main.go:7:10: leaking param: s./main.go:8:10: new(A) escapes to heap./main.go:16:13: io.Writer(os.Stdout) escapes to heap./main.go:16:13: c escapes to heap./main.go:15:9: b + "!" escapes to heap./main.go:13:10: main new(A) does not escape./main.go:14:11: main a.s + " world" does not escape./main.go:16:13: main []interface {} literal does not escape<autogenerated>:1: os.(*File).close .this does not escape ./main.go:8:10: new(A) escapes to heap 说明 new(A) 逃逸了,符合上述提到的常见情况中的第一种。 ./main.go:14:11: main a.s + " world" does not escape 说明 b 变量没有逃逸,因为它只在方法内存在,会在方法结束时被回收。 ./main.go:15:9: b + "!" escapes to heap 说明 c 变量逃逸,通过fmt.Println(a ...interface{})打印的变量,都会发生逃逸,感兴趣的朋友可以去查查为什么。 以上操作其实就叫逃逸分析。下篇文章,跟大家聊聊怎么用一个比较trick的方法使变量不逃逸。方便大家在面试官面前秀一波。 文章推荐: golang面试题:简单聊聊内存逃逸? golang面试题:字符串转成byte数组,会发生内存拷贝吗? golang面试题:翻转含有中文、数字、英文字母的字符串 golang面试题:拷贝大切片一定比小切片代价大吗? golang面试题:能说说uintptr和unsafe.Pointer的区别吗? 如果你想每天学习一个知识点?
点赞 0
评论 0
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
07-28 11:15
已编辑
南京邮电大学 Java
Java面经-大数据面经-华为OD
背景19届目标院校非计算机专业本科,23年毕业。 机考(150分钟)机考为三道题,总时长为2个半小时。现在机考已经换成了25C卷,但考的知识点还是相同的,推荐反复做之前的题卷来熟悉知识点和技巧。比如动态规划、DFS、BFS这些算法首先是要熟悉,机考部分会涉及,后面技术面手撕的时候也很可能遇到,所以这部分准备好了不尽是为了机试,也为后面技术面做了铺垫。 1、灰度图存储 2、可以组成网络的服务器 3、绘图机器机试结果就是看用例的通过率。一般大多数情况都会考虑到,但有些特殊的情况也需要在代码里体现,比如null值判断的选择分支,这些在刷题的时候也能多多练习和注意。 综测这就是选择题,在机试通过后很快...
查看15道真题和解析
点赞
评论
收藏
分享
07-28 15:10
OPPO_软件开发部_IT开发工程师(准入职员工)
OPPO暑期实习内推
最近好多小伙伴问我在OPPO当管培生咋样,请攻击我最薄弱的地方~ 💼轮岗实践,技能拉满 管培生要在不同岗位轮岗,像我现在在门店,从产品知识、销售技巧到门店运营都得学。和顾客交流,帮他们选到合适的OPPO 设备,成就感拉满!也更懂消费者需求,对以后做策略超有帮助~ 👥大佬带飞,成长特快 公司给配了导师,从业务到职业规划,手把手教。遇到难题,随时能找他们取经,能少走好多弯路!还有各种培训、分享会,行业前沿知识、OPPO 黑科技,听得人热血沸腾,感觉自己在飞速进步~ ✨氛围超棒,青春感十足 OPPO 的小伙伴都很年轻有活力,大家一起头脑风暴、搞活动,像最近推广 Reno14 系列,团队齐心协力,...
OPPO成长空间 544人发布
点赞
评论
收藏
分享
07-08 17:23
南京技师学院 安卓
mentor手把手教我包装简历
我的简历可以说是全是水份实习期间在给mentor打杂后面写简历把mentor干的活全写进去了然后发给他看让他锐评一下后续秋招每一轮面试都会问这个优化问题,大部分情况都能答出来,偶尔遇到面试官问的非常细的时候,我就再去骚扰mentor,让他给我解答,让简历里的这个点做到滴水不漏。
勇敢的马后炮炮手在写...:
你起一个中介作用
简历当中有水分算不算造假...
点赞
评论
收藏
分享
06-22 21:02
广东药科大学 Java
请问这是在招奴隶吗
这种公司就赶紧避雷吧,有bug半夜也要起来?还学习腾讯,自己几斤几两不清楚吗
Java大菜狗:
纯纯招黑奴,一天还不到两百那么多要求,还不迟到早退,以为啥啊,给一点工资做一堆活,还以不拖欠员工工资为荣,这是什么值得骄傲的事情吗,纯纯***公司
点赞
评论
收藏
分享
07-27 17:47
已编辑
快手_KSIB_WEB(实习员工)
2025 年了,万分推荐的前端学习路径!!!
📝最近也没有小伙伴问我学习路径,但我还是心血来潮写一篇推荐的学习路线^_^ 一个明确的学习路线,能达到一个事半功倍的效果(o(╥﹏╥)o 为啥没人来这样提醒我) 练气期(HTML CSS) HTML CSS 这两个熟能生巧,建议直接仿小米官网之类的纯 HTML + CSS的项目 CSS(进阶) box盒子模型 Flex布局 :Flex学习小游戏网址 position布局 练气练了三千年(JS) JavaScripInfo URL 做好笔记,完成章节课后任务 推荐实体书,或者网络上找盗版电子书 推荐实体书,或者网络上找盗版电子书 万分推荐边学习,边写文章记录 语雀...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
百度提前批,三面被推迟一周,喜提秋招第一凉
7614
2
...
虾皮秋招一面
3255
3
...
百度提前批 三面
2800
4
...
他拿大厂SSP Offer打牌是什么概念啊?25届双非之光
2728
5
...
小鹏offer
1559
6
...
被猿辅导挂了简历,但我想说...
1442
7
...
虾皮一面凉经
1375
8
...
最强本科✌
1347
9
...
上班一周,工资还没拿,先欠公司两千
1296
10
...
大学四年,我感觉我像个“孤勇者”
1236
创作者周榜
更多
正在热议
更多
#
简历上的经历如何包装
#
29575次浏览
821人参与
#
秋招被确诊为……
#
164162次浏览
752人参与
#
中兴秋招
#
205753次浏览
2296人参与
#
工作中哪个瞬间让你想离职
#
63707次浏览
569人参与
#
你最希望上岸的公司是?
#
135226次浏览
706人参与
#
和同事相处最忌讳的是__
#
24469次浏览
244人参与
#
25届网易互娱暑实进度
#
78430次浏览
702人参与
#
虾皮求职进展汇总
#
249468次浏览
1856人参与
#
投格力的你,拿到offer了吗?
#
86797次浏览
583人参与
#
2022毕业即失业取暖地
#
102716次浏览
662人参与
#
2022毕业生求职现身说法
#
89298次浏览
700人参与
#
秋招OC许愿
#
327820次浏览
2450人参与
#
你最近一次加班是什么时候?
#
71005次浏览
350人参与
#
26届的你,投了哪些公司?
#
45326次浏览
497人参与
#
你的秋招第一面感觉怎么样
#
76936次浏览
592人参与
#
柠檬微趣工作体验
#
6743次浏览
40人参与
#
你遇到最难的面试题目是_
#
16694次浏览
201人参与
#
我对___祛魅了
#
48589次浏览
441人参与
#
地平线求职进展汇总
#
52656次浏览
370人参与
#
研究所VS国企,该如何选
#
194851次浏览
1819人参与
#
如果校招重来我最想改变的是
#
271933次浏览
2853人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务