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

asp公司网站源码网站模板 北京公司

asp公司网站源码,网站模板 北京公司,医院网站建设,电力行业网站建设文章目录 问题怎么答举例 问题 知道golang的内存逃逸吗#xff1f;什么情况下会发生内存逃逸#xff1f; 怎么答 golang程序变量会携带有一组校验数据#xff0c;用来证明它的整个生命周期是否在运行时完全可知。如果变量通过了这些校验#xff0c;它就可以在栈上分配。… 文章目录 问题怎么答举例 问题 知道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 main import fmt type A struct {s string } // 这是上面提到的 在方法内把局部变量指针返回 的情况 func foo(s string) *A {a : new(A) a.s sreturn a //返回局部变量a,在C语言中妥妥野指针但在go则ok但a会逃逸到堆 } func main() {a : foo(hello)b : a.s worldc : 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{})打印的变量都会发生逃逸感兴趣的朋友可以去查查为什么。 以上操作其实就叫逃逸分析。
http://www.w-s-a.com/news/786787/

相关文章:

  • 为什么公司网站打开很慢wordpress汉化插件
  • 用dw做教学网站做网站用什么配置笔记本
  • 秦皇岛网站制作服务无网站无产品链接如何做SOHO
  • 国际婚恋网站做翻译合法吗南宁网络推广有限公司
  • 济南做网站公司排名销售市场规划方案
  • 营销型网站定制珠海建站网站
  • 企业网站代码wordpress页面重定向循环
  • 厦门网站建设哪家便宜用wordpress做企业网站
  • 网站备案有幕布python 做网站速度
  • 旅游网站模板psd网站后台维护主要做什么
  • 晋江做任务的网站网站如何设置关键词
  • 呼伦贝尔网站建设呼伦贝尔ps网页设计心得体会
  • 字母logo设计网站动画设计方案及内容
  • 怎样做网站建设方案wordpress 附件预览
  • 网站内容编辑wordpress cron原理
  • 户外商品网站制作建筑网络图片
  • 注册了网站怎么建设做网站是学什么专业
  • 济南建设网站哪里好网站色哦优化8888
  • 什么网站做简历最好外贸公司网站大全
  • 衡水网站托管企业二级网站怎么做
  • 丹阳网站建设公司旅游类网站开发开题报告范文
  • 地方门户网站建设苏州网站优化建设
  • 谁用fun域名做网站了网络营销的三种方式
  • 织梦网站上传天津网站建设电话咨询
  • 论坛网站搭建深圳网
  • 天津建立网站营销设计window7用jsp做的网站要什么工具
  • 英文网站wordpress所有图片
  • 我做的网站怎么打开很慢网络营销典型企业
  • 新增备案网站python3网站开发
  • 诊断网站seo现状的方法与通信工程专业做项目的网站