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

徐老师在那个网站做发视频新乡seo推广

徐老师在那个网站做发视频,新乡seo推广,无锡百度推广代理商,seo收录查询1.1 逃逸分析是什么 逃逸分析是指编译器在执行静态代码分析后,对内存管理进行的优化和简化。 在编译原理中,分析指针动态范围的方法被称为逃逸分析。通俗来讲,当一个对象的指针被多个方法或线程引用时,则称这个指针发生了逃逸。…

1.1 逃逸分析是什么

逃逸分析是指编译器在执行静态代码分析后,对内存管理进行的优化和简化。

在编译原理中,分析指针动态范围的方法被称为逃逸分析。通俗来讲,当一个对象的指针被多个方法或线程引用时,则称这个指针发生了逃逸。逃逸分析决定一个变量是分配在堆上还是分配在栈上。

1.2 逃逸分析有什么作用

逃逸分析把变量合理地分配到它该去的地方,“找准自己的位置”。既是使用 new 函数申请到的内存,如果编译器发现这块内存在退出函数后就没有使用了,那就分配到栈上,毕竟栈上的内存分配比堆上快很多;反之,既是表面上只是一个普通的变量,但是经过编译器的逃逸分析后发现,在函数之外还有其他的地方在引用,那就分配到堆上。真正做到 “按需分配”。

如果变量都分配到堆上,堆不像栈可以自动清理。就会引起 Go 频繁地进行垃圾回收,而垃圾回收会占用比较大的系统开销。

堆和栈相比,堆适合不可预知大小的内存分配。但是为此付出的代价是分配速度较慢,而且会形成内存碎片;栈内存分配则非常快。栈分配内存只需通过 PUSH 指令,并且会被自动释放;而堆分配首先需要去找到一块大小合适的内存块,之后要通过垃圾回收才能释放。

通过逃逸分析,可以尽量把那些不需要分配到堆上的变量直接分配到栈上,堆上的变量变少了,会减轻堆内存分配的开销,同时也会减少垃圾回收(Garbage Collction,GC)的压力,提高程序运行速度。

1.3 逃逸分析是怎么完成的

Go 语言逃逸分析最基本的原则是:如果一个函数返回对一个变量的引用,那么这个变量就会发生逃逸。

编译器会分析代码的特征和代码的生命周期,Go 中的变量只有在编译器可以证明在函数返回后不再被引用,才分配到栈上,其他情况下都是直接分配到堆上。

Go 语言里没有一个关键字或者函数可以直接让变量被编译器分配到堆上。相反,编译器通过分析代码来决定将变量分配到何处。

对一个变量取地址,可能会被分配到堆上。但是编译器进行逃逸分析后,如果考虑到在函数返回后,此变量不会被引用,那么还是可能分配到栈上。简单来说,编译器会根据变量是否被外部引用来决定是否逃逸:

如果变量在函数外部没有被引用,则优先放到栈上。
如果变量在函数外部存在引用,则必定放在堆上。
针对第一条,放到堆上的情形:定义了一个很大的数组,需要申请的内存过大,超过了栈的存储能力。

1.4 如何确定是否发生逃逸分析

Go 提供了相关的命令,可以查看变量是否发生了逃逸。例子如下:

package  mainimport  "fmt"func  foo() *int {t :=  3return  &t
}func  main() {x :=  foo()fmt.Println(*x)
}

foo 函数返回一个局部变量的指针,使用 main 函数里变量 x 接收它。执行如下命令:

go build -gcflags '-m-l' main.go

其中 -gcflags 参数用于启用编译器支持的额外标志。例如, -m 用于输出编译器的优化细节(包括使用逃逸分析这种优化),相反可以使用 -N 来关闭编译器优化;而 -l 则用于禁用 foo 函数的内联优化,防止逃逸被编译器通过内联优化彻底的抹除。得到如下输出:

### command-line-arguments
src/main.go:7:9: &t escapes to heap
src/main.go:6:7: moved to heap: t
src/main.go:12:14: *x escapes to heap
src/main.go:12:13: main ... argument does not escape

foo 函数里的变量 t 逃逸了,和预想的一致,不解的是为什么 main 函数里的 x 也逃逸了?这是以为有些函数的参数为 interface 类型,比如 fmt.Println(a …interface{}) ,编译期间很难确定其参数的具体类型,也会发生逃逸。

http://www.dtcms.com/wzjs/271760.html

相关文章:

  • 艺术设计教学资源网站建设标准哪里可以引流到精准客户呢
  • 网站开发 演讲黑帽seo
  • 网站怎么做超链接北京seo公司助力网络营销
  • 长沙企业网站排名杭州网站推广找哪家
  • 做竞价的网站需要做外部链接吗线下实体店如何推广引流
  • 优化网站排名推荐公司营销型网站推广方案
  • 网站建设自我介绍如何推广小程序
  • 坪山商城网站建设哪家便宜罗湖区seo排名
  • 企业vi设计公司上海设计公司seo外链怎么发
  • 服务器网站建设维护百度一下首页官网百度
  • 怎么看一个网站是不是外包做的网站营销方案模板
  • 山东网站建设流程网络营销品牌推广公司
  • 东莞技术好的网站建设推广广东网站营销seo费用
  • 梅州市住房和建设局网站百度搜索页
  • 沈阳网站制作找网势科技qq推广链接生成
  • 网站建设教学改进南京seo域名
  • 网站首页的滚动大图怎么做百度导航下载安装手机导航
  • ps企业网站模板免费下载软件培训机构排名
  • 社交网站用户体验企业网站怎么注册
  • gta5此网站正在建设seo营销优化软件
  • 自己做网站步骤手机百度2020
  • 手机网站建设域名空间sem推广软件选哪家
  • 网站设计宽屏seo内容优化心得
  • 产品发布网站模板锦州网站seo
  • 本地wordpress 上传到服务器seo单页快速排名
  • 10_10_微信里网站怎么做的电商网站有哪些
  • 做视频采集网站违法吗培训网登录入口
  • 免费推广网店郑州搜狗关键词优化顾问
  • 网校网站怎么做适合30岁女人的培训班
  • 做网站找 汇搜网络河南最近的热搜事件