加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

关于Golang GC的一些误解,真的比Java算法更领先吗?

发布时间:2019-08-13 22:45:44 所属栏目:建站 来源:William Kennedy
导读:起首夸大下本文的因由是在高可用架构后花圃群的一次谈天,各人在争论Golang的GC到底是相同Java的ZGC照旧相同Java的CMS GC。我小我私人的观点是Golang的GC是相同于Java的CMS GC,官方的mgc的注释这么说的: //TheGCrunsconcurrentlywithmutatorthreads,istypeac

以下做法可以辅佐垃圾网络器:

  • 尽也许保持最小的堆。
  • 最佳的同等的起博频率。
  • 保持在每次网络的方针之内。
  • 最小化每次垃圾网络的STW和Mark Assist的一连时刻。

全部这些都有助于镌汰垃圾接纳造成耽误,也将进步应用措施的机能和吞吐量。 垃圾网络的频率与此无关。

相识事变量意味着确保行使公道数目的goroutine来完成事变。 CPU瓶颈与IO瓶颈的事变负载差异,必要差异的工程决定,可以参考本文。https://www.ardanlabs.com/blog/2018/12/scheduling-in-go-part3.html

相识数据意味着相识虚要办理的题目。 数据语义同等性是维护数据完备性的要害部门,并允应承你抉择在堆上照旧栈上分派内存。https://www.ardanlabs.com/blog/2017/06/design-philosophy-on-data-and-semantics.html

结论

对Go说话运行时来说重要的是要熟悉到有用的内存分派(辅佐应用措施的分派)和那些没有无效的内存分派(那些侵害应用措施)之间的差别。 然后就只能信赖垃圾网络器可以高效的运行。

拥有垃圾网络器是一个很好的衡量。 固然有垃圾网络的本钱,可是却没有内存打点的承担。 Go说话同时分身了开拓和运行服从。 垃圾网络器是实现这一方针的重要构成部门。

原文地点:

https://www.ardanlabs.com/blog/2018/12/garbage-collection-in-go-part1-semantics.html

参考资料:

https://github.com/golang/go/blob/release-branch.go1.5/src/runtime/mgc.go

https://github.com/golang/proposal/blob/master/design/17505-concurrent-rescan.md

https://github.com/golang/proposal/blob/master/design/17503-eliminate-rescan.md

https://blog.golang.org/ismmkeynote

https://www.youtube.com/watch?v=aiv1JOfMjm0&t=1208s

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读